【发布时间】:2012-02-23 12:54:32
【问题描述】:
我有一个 Foo 类,它是 SUT 和一个 Bar 类,它是它的合作者。 Foo 在 Bar 上调用 run(List<Object> values),并使用“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 在调用方法时存储参数的快照,并根据这些值而不是最近的值来验证它们。
【问题讨论】:
标签: java unit-testing mockito