【发布时间】:2019-08-27 17:53:42
【问题描述】:
我正在测试一个使用我模拟过的另一个类的类。外部类的方法之一修改了传递给模拟类方法的参数,我需要检查它是否被正确修改。
代码如下所示:
public class Foo
{
public boolean performTask(String name, Integer version)
{
...
}
}
public class Bar
{
private Foo foo;
public Bar(Foo foo)
{
this.foo = foo;
}
public void doSomething(String name, Integer version)
{
boolean good = foo.performTask(name, ((version.startsWith("A")) ? null : version));
...
}
}
我需要检查如果我传递了一个以A 开头的name 参数,那么传递给performTask() 的第二个参数是否为空。
编辑:
根据要求,这是单元测试的开始:
public class BarTest
{
@Mock
private Foo mockFoo;
@Before
public void setup() throws Exception
{
MockitoAnnotations.initMocks(this);
}
@Test
public void test() throws Exception
{
Bar bar = new Bar(mockFoo);
bar.doSomething("ABC", new Integer(1));
}
}
【问题讨论】:
-
你的测试结果如何?我假设模拟
Foo并将模拟提供给Bar就可以了。之后您可以使用Mockito.verify来确保调用了正确的方法。 -
我看到的所有使用 verify 的示例都涉及直接调用模拟类。在这种情况下我该如何使用它?