一尘不染

使用Mockito模拟嵌套方法调用

java

我有四个让我们说A,B,C,D的类,每个类都从另一个调用方法。

现在我已经模拟了类A,并且想模拟使用嘲笑的方法

A a = Mockito.mock(A.class);

并希望在递归方法调用上获取“ foo”

a.getB().getC().getD() 应该回来 "foo"

我试过了

when(a.getB()。getC()。getD())。thenReturn(“ foo”);

但是得到了nullPointerException

然后我尝试

doReturn(“ foo”)。when(a.getB()。getC()。getD());

然后我得到了 org.mockito.exceptions.misusing.UnfinishedStubbingException:

我知道我可以创建B,C和D的对象,甚至可以编写类似

B b =模拟(B.class)或A.setB(新B())

等等。

但是我不能一次完成吗?任何帮助,将不胜感激。


阅读 513

收藏
2020-12-03

共1个答案

一尘不染

添加 RETURNS_DEEP_STUBS可以 达到目的:

A a = Mockito.mock(A.class, Mockito.RETURNS_DEEP_STUBS);
2020-12-03