当前位置: 首页 > 知识库问答 >
问题:

如何使用EasyMock创建“深度”模拟

傅振濂
2023-03-14

我有一个间接使用类Foo的测试用例。对于测试用例,我不在乎Foo是什么。我应该可以嘲笑它。

Foo mock = EasyMock.createMock(Foo.class);

然而,testcase使用一个库来调用Foo上的一些方法。其中一些方法返回对象,然后该库对这些返回的对象调用一些方法。就本测试而言,这些对象是什么并不重要,只是它们不是null,并且不会导致NullPointerException。

对于该库调用的每个对象和方法,我已经经历并添加了一系列类似以下的expect调用:

Bar bar = EasyMock.createMock(Bar.class);
Baz baz = EasyMock.createMock(Baz.class);
EasyMock.expect(mock.getBar()).andReturn(bar).anyTimes();
EasyMock.expect(bar.getBaz()).andReturn(baz).anyTimes();

基本上,只是一次又一次地为这个库最终调用的任何方法创建期望。

同样,对于我的测试来说,对象本身并不重要。库只需要它们在大多数情况下不为null。

有没有办法实现自动化?我想要的是某种“深度模拟”功能,我可以告诉EasyMock自动返回通过模拟对象获得的任何对象的模拟对象。

共有1个答案

霍弘厚
2023-03-14

事实证明,mockito内置了以下功能:

Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);
 类似资料:
  • 我尝试从以下方法创建单元测试,但我找不到一个解决方案来模拟每个方法内的调用,请您帮助我使用EasyMock为这些方法创建JUnit Test: 提前感谢

  • 我正在尝试为以下类编写单元测试: 还有一些其他方法,但这个设置代码是与我的问题相关的。在单元测试中,我想模拟(使用EasyMock)对象以及它将返回的和对象: 当我尝试用JUnit运行它时,我得到以下错误: 在上没有我可以看到的公共变量。我是EasyMock的新手,所以我想我的问题是:对于我应该告诉我的mock返回什么,以及如何告诉它这样做?我根本不知道为什么设置代码会被调用,所以这是另一个谜。更

  • 我不确定我的问题是出在代码的深度复制部分,还是我在将元素添加到原始列表时犯了错误。到目前为止我所掌握的是: ...其中与此相关联的测试用例是:

  • 问题内容: 是否可以使用EaskMock模拟具体的类?如果是这样,我该怎么办? 问题答案: 请参阅EasyMock类扩展文档,并从SourceForge项目下载它。但是,您不能模拟最终方法。 编辑:如注释中所述,这是EasyMock v3及更高版本的一部分。

  • 我有一堂这样的课: 我需要使用EasyMock模拟服务<代码>EasyMock。createMock()后跟replay()不起作用。P、 S:这是其他开发人员编写的遗留代码,我们不能在这里更改代码。

  • 问题内容: 我已经看到了一些与此相关的问题,但是对于我的特定问题,我似乎无法理解任何答案。 我有一个模拟对象,让我们调用“ object1”,将其发送到某种测试方法,让我们调用testMethod()。所以我最后打电话 用于检测。现在在这个testMethod的某个地方,它将有一部分调用方法 这是一个无效方法。如果方法像 它实际上会返回什么,我通常会这样做 但是,这是一个无效方法,我只想测试一下它