传递给从另一个类调用的模拟方法的计算参数



我正在测试一个使用我模拟的另一个类的类。其中一个外部类的方法修改了传递给模拟类的方法的参数,我需要检查它是否正确修改。

代码如下所示:

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()的第二个参数为 null。

编辑:

根据要求,这是单元测试的开始:

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));
}
}

我看到的所有使用 verify 的示例都涉及直接调用模拟类。在这种情况下如何使用它?

正是如此。您所需要的只是访问您拥有的模拟。

Mockito.verify(mockFoo, Mockito.times(1)).performTask("ABC", null);

如果该方法应该return什么很重要(默认情况下为 false(, 您需要使用以下方法定义行为:

Mockito.when(mockFoo.performTask("ABC", null)).thenReturn(true);

例:

@Test
public void test() throws Exception {
Mockito.when(mockFoo.performTask("ABC", null)).thenReturn(true);
Bar bar = new Bar(mockFoo);
bar.doSomething("ABC", new Integer(1));
Mockito.verify(mockFoo, Mockito.times(1)).performTask("ABC", null);
}

相关内容

  • 没有找到相关文章

最新更新