import java.util.function.Consumer
import spock.lang.Specification
class MySpec extends Specification {
def "type coercion does not work during interaction verification"() {
given:
Consumer good1 = Mock(Consumer)
Consumer good2 = Mock(Consumer)
Consumer good3 = Mock(Consumer)
Consumer good4 = Mock(Consumer)
Consumer bad = Mock(Consumer)
when:
good1.accept([])
good2.accept([] as Set)
good3.accept([] as Set)
good4.accept([] as Set)
bad.accept([] as Set)
then:
1 * good1.accept([])
1 * good2.accept(new HashSet([]))
1 * good3.accept(new LinkedHashSet([]))
1 * good4.accept({it == [] as Set})
1 * bad.accept([] as Set)
}
}
results in failure
Too few invocations for:
1 * bad.accept([] as Set) (0 invocations)
Unmatched invocations (ordered by similarity):
1 * bad.accept([])
One or more arguments(s) didn't match:
0: argument == expected
| | |
| | [] (java.util.ArrayList)
| false
[] (java.util.LinkedHashSet)
at org.spockframework.mock.runtime.InteractionScope.verifyInteractions(InteractionScope.java:98)
at org.spockframework.mock.runtime.MockController.leaveScope(MockController.java:77)
at MySpec.type coercion does not work during interaction verification(MySpec.groovy:19)
Spock version: 1.3-groovy-2.5.
results in failure
Spock version: 1.3-groovy-2.5.