当前位置: 首页 > 面试题库 >

使用Mockito模拟嵌套方法调用

罗乐意
2023-03-14
问题内容

我有四个让我们说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())

等等。

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


问题答案:

添加 RETURNS_DEEP_STUBS可以 达到目的:

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


 类似资料:
  • 我有4个类让说A,B,C,D,每一个调用的方法从另一个。 现在我已经模拟了类A,并想使用mockito模拟一个方法 但得到nullPointerException 然后我试着 doReturn(“foo”).When(A.getb().getc().getd()); 但我不能一次就做到吗?如有任何帮助,我们将不胜感激。

  • 使用mockito模拟一个方法会确保永远不会调用被模拟的方法吗?我有一个主类,它包含一些我想为其编写单元测试的代码,还有一个单元测试类MainTest,它包含主类的单元测试。 eg: 源类: JUnit测试(使用mockito) 这项测试失败了。为什么?

  • 我对ScalaMock和嘲笑都是新手。我试图测试一个方法,它调用另一个(mocked)类中的方法,然后在返回的对象上调用方法。 详细资料: 所以我使用ScalaTest,这个测试涉及到五个类... 我正在测试的子指令 在测试中必须被嘲笑的机器 构造机器对象所需的寄存器 我创建为原始机器类的MockableMachine没有空构造函数,因此(据我所知)无法模拟 最后是我的测试类SubInstruct

  • 我是莫基托的新手。我试图通过模拟数据库交互为服务编写jnuit: 我有下面的类(只是实际类的代表) 我的测试课就像是 但是当我运行这个测试时,它仍然调用实际的db调用并从DB中检索值,而不是模拟值,我应该模拟sql连接和非默认构造函数吗?我一无所知。 -- 更新 正如人们所建议的那样,我将DAO实例化移动到我的服务构造函数中,并且还使用了Spy,但是我仍然调用了实际的DB调用而不是模拟调用。

  • 我的测试存根是 我在这里做错了什么?