我是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));