Учитывая, что у меня есть следующий метод в классе, над которым я издеваюсь:
class Foo {
public void doSomething(Collection<String> input) {
//...
}
}
Теперь я издеваюсь над этим классом в своем тесте Spock и хочу проверить взаимодействие:
def test() {
setup:
def myMock = Mock(Foo)
when:
def hashSet = new HashSet<String>(['foo', 'bar'])
myMock.doSomething(hashSet)
then:
1 * myMock.doSomething(['foo', 'bar'])
}
Однако это взаимодействие не срабатывает. Что действительно странно, так это то, что вывод говорит мне:
too few invocations for:
1 * myMock.doSomething(['foo', 'bar']) (0 invocations)
Unmatched invocations (ordered by similarity):
1 * myMock.doSomething(['foo', 'bar'])
Таким образом, он в основном сказал мне, что не было вызова, похожего на тот, который я ожидал, но был другой, который ... эммм выглядел как тот, который я ожидал.
Я делаю что-то не так или это ограничение Спока, и мне нужно проверить содержимое коллекции в закрытии, например
1 * mock.doSomething( { it == ['foo', 'bar'] })