Mockito和这个电话

  • 本文关键字:电话 Mockito mockito
  • 更新时间 :
  • 英文 :


我有一个非常简单的例子如下:

public class Foo {
    public int foo() {
        return foo1();
    }
    public int foo1() {
        return 1;
    }
}
public class FooTest {
    @Test public void testFoo() {
        Foo f = mock(Foo.class);
        doReturn(1000).when(f).foo1();
        assertThat(f.foo(), equalTo(1000));
    }
}

我得到一个java.lang.AssertionError:预期:is(1000)得到:<0>,我不明白为什么。很明显,我一定做错了什么,因为这是非常基本的嘲讽,所以我无法想象这不起作用。

请注意,您在foo1()上记录了期望值,但随后调用了foo()。。。当然,它返回的是0,而不是1000

您需要的是一个间谍而不是一个mock。

http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#13

试试这个

Foo foo = new Foo();
Foo f = spy(foo);

当CGLIB获得Foo类时,它并不关心您的底层有什么聪明的实现。不考虑您的报税表。Mockito看到(1)一个名为Foo的模拟类,(2)调用foo1()时有一条指令,(3)调用Foo()时没有指令。

从风格上讲,时的不是比doReturn更受欢迎吗?所以

when(f.foo1()).thenReturn(1000);

相关内容

  • 没有找到相关文章

最新更新