Mockito可以根据方法调用时的值验证参数吗?

Tom*_*ker 17 java unit-testing mockito

我有一个FooSUT 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 Code Online (Sandbox Code Playgroud)

请注意,协作者实际上是间谍对象而不是模拟对象.此测试用例将失败,因为即使run()使用等于的参数调用expectedList,它也会被修改,因此它的当前值不再等于expectedList.然而,这是它应该工作的方式,所以我想知道是否有办法让Mockito在调用方法时存储参数的快照,并根据这些值而不是最近的值来验证它们.

Daw*_*ica 13

Answer调用方法时,使用an 检查参数的值.您可以抛出一个AssertionErrorAnswer如果值是错误的,或者你可以存储的价值,并在年底做你的说法.