我有以下测试代码。这里的代码可能看起来有点奇怪,但我从一个更大的应用程序中取出它并删除了所有不重要的部分。
interface Checker {
public void check(Set set);
}
public void methodToTest(Checker checker, Set things){
checker.check(things);
things.add("3");
}
@Test
public void test() {
Checker checker = mock(Checker.class);
Set argSet = Sets.newHashSet("1", "2");
Set exSet = Sets.newHashSet("1", "2");
methodToTest(checker, argSet);
verify(checker).check(exSet);
}
比较失败: 预期:checker.check([1,2]); 实际:checker.check([1,2,3]);
调试后我发现Mockito通过引用存储方法调用的参数。所以它指向argSet
在验证之前会被更改。
我该如何解决这个问题。有没有办法以某种方式告诉mockito在方法调用点存储参数状态?