验证模拟对象的方法

时间:2015-05-06 01:04:10

标签: java junit powermockito

说我有这样的课程:

public class Foo {
    private Bar bar;
    public Foo(Bar bar) {
        this.bar = bar;
    }

    public void someMethod() {
        bar.someOtherMethod();
    }
}

当调用someMethod()时,如何验证bar.someOtherMethod()被调用一次?在我的测试中,我将一个模拟的Bar类传递给构造函数。

我的测试看起来像这样:

private Bar bar;
private Foo foo;

@Before
public void setUp() throws Exception {
    bar = mock(Bar.class);
    foo = new Foo(bar);
}

@Test
public void testSomeMethod() {
    foo.someMethod();
    verify(Bar).someOtherMethod();
}

2 个答案:

答案 0 :(得分:2)

使用Mockito -

verify(mockBar, times(1)).someOtherMethod();

答案 1 :(得分:0)

由于您在Bar的实例中传递,因此相对简单:

  • 与模拟交互(即你必须期望模拟做某事(或者在这种情况下什么也不做)
  • 期待与之交互过一次

有了这个,你可以在你的测试中使用这样的东西:

doNothing().when(mockBar).someOtherMethod();
foo.someMethod();
verify(mockBar).someOtherMethod();