我有一个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);
}
请注意,协作者实际上是一个 spy 对象而不是一个模拟对象。这个测试用例将会失败,因为即使 run()
被调用时参数等于 expectedList
,此后被修改,其当前值不再等于 expectedList
。然而,这是它应该工作的方式,所以我想知道是否有一种方法可以让 Mockito 在调用方法时存储参数快照,并根据这些值而不是最新值验证它们。
最佳答案
调用方法时使用Answer
检查参数的值。如果值错误,您可以在 Answer
中抛出 AssertionError
,或者您可以存储该值,并在最后执行断言。
关于java - Mockito 可以根据方法调用时的值来验证参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38660517/