У меня есть класс Foo
, который является SUT, и класс Bar
, который является его соавтором. Foo
вызывает run(List<Object> values)
на Bar
с "expectedList
" в качестве аргумента. Затем Foo
добавит еще несколько элементов к этому List
, так что его состояние будет отличаться от того, которое было на момент вызова run()
. Вот мой тестовый пример.
@Test
public void testFoo() {
Bar collaborator = spy(new Bar());
Foo sut = new Foo(collaborator);
verify(collaborator).run(expectedList);
}
Обратите внимание, что соавтор на самом деле является объектом шпиона, а не насмешкой. Этот тест не пройдёт, потому что, хотя run()
был вызван с аргументом, равным expectedList
, он был изменён, и его текущее значение больше не равно expectedList
. Тем не менее, это способ, которым он должен работать, поэтому мне интересно, есть ли способ, чтобы Mockito сохранял моментальный снимок параметров при вызове метода и проверял их на основе этих значений, а не самых последних значений.