深度存根与doReturn方法一起使用

时间:2015-06-17 07:38:35

标签: java mockito

我正在尝试使用doReturn方法使用Mockito 深层存根功能。

当我在深层存根示例中使用when方法时,它可以正常工作:

Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS);
when(mock.getBar().getName()).thenReturn("deep");

但是,当我尝试使用doReturn同样的事情时,我得到WrongTypeOfReturnValue

doReturn("deep").when(mock).getBar().getName();

我也尝试过这些方法,但后来我得到了UnfinishedStubbingException

doReturn("deep").when(mock.getBar()).getName();
doReturn("deep").when(mock.getBar().getName());

如何使用doReturn方法使用深层存根功能?

(我知道包括Mockito开发人员在内的一些人不鼓励使用深层存根。我不确定我是否同意他们对此的立场。让我们继续讨论这个问题。问题。)

1 个答案:

答案 0 :(得分:6)

当你用when方法调用深层存根时,Mockito似乎感到困惑。我可以通过单独调用mock.getBar()来解决这个问题:

    Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS);
    Bar bar = mock.getBar();
    doReturn("deep").when(bar).getName();