我是Mockito的新手,我一直在寻找一种方法来验证如果我使用正确的字符串调用filter()方法,那么foo方法将被调用一次。

public class A
{
    private final Config _config;

    public A(Config config) { _config = config; }

    public void filter(String str)
    {
        if(str.startsWith("a"))
        {
            if(str.contains("z"))
            {
                foo(config.getName());
            }
        }
    }

    private void foo(String bar)
    {
        (...)
    }
}


这是我当前的代码:

@Test
public void testOne()
{
    Config config = new Config(configFile);
    A a = Mockito.spy(new A(config));
    a.filter("abcz");
    verify(a, times(1)).foo(someString);
}

最佳答案

进行此类测试时,请尝试变得更通用。如果您不需要指定传递的确切参数,则使用any()

import static org.mockito.ArgumentMatchers.any;

verify(a).foo(any(String.class));

09-10 05:39
查看更多