当Mockito在方法调用后更改时,热验证方法参数

时间:2016-07-29 13:46:50

标签: java unit-testing mockito

我有以下测试代码。这里的代码可能看起来有点奇怪,但我从一个更大的应用程序中取出它并删除了所有不重要的部分。

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在方法调用点存储参数状态?

0 个答案:

没有答案