我正在尝试使用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开发人员在内的一些人不鼓励使用深层存根。我不确定我是否同意他们对此的立场。让我们继续讨论这个问题。问题。)
答案 0 :(得分:6)
当你用when
方法调用深层存根时,Mockito似乎感到困惑。我可以通过单独调用mock.getBar()
来解决这个问题:
Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS);
Bar bar = mock.getBar();
doReturn("deep").when(bar).getName();