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

EasyMock无效方法

亢仰岳
2023-03-14
问题内容

我正在尝试使用EasyMock模拟一些数据库接口,以便可以测试包装方法中的业务逻辑。我在测试设置中使用通过以下方法返回方法一直都很好。

DBMapper dbmapper = EasyMock.createMock(DBMapper.class);
userService.setDBMapper(dbmapper);

然后在我的实际测试中

EasyMock.expect(dbmapper.getUser(userId1)).andReturn(mockUser1);
EasyMock.replay(dbmapper);
userService.getUser(userId1);

然后,该服务连接到dbmapper并返回对象(使用setter方法注入了映射器)

这些类型的模拟似乎工作正常。但是,当我尝试进行测试

userService.addUser(newUser1);

此方法称为void方法。

dbmapper.createUser(newUser);

正是这种方法使我无法解决问题。我尝试了以下

EasyMock.expectLastCall();
EasyMock.replay(dbMapper);
userService.addUser(newUser1);

正如其他一些帖子/问题似乎暗示我得到了 IlligalStateException: no last call on a mock available

有人能指出我正确的方向吗?

提前谢谢了


问题答案:

你近了

您只需要在调用之前在模拟程序上调用方法 expectLastCall()

因此,您的期望将如下所示:

userService.addUser(newUser1);
EasyMock.expectLastCall();
EasyMock.replay(dbMapper);
userService.addUser(newUser1);

之所以可行,是因为模拟对象在调用之前处于Record模式replay(),因此对其的任何调用都将执行默认行为(返回null
/不执行任何操作),并且有资格在replay()调用该方法时重播。

我想做的是确保方法调用很明显是期望的,是在它前面加上一个小注释,如下所示:

/* expect */ userService.addUser(newUser1);
EasyMock.expectLastCall();
EasyMock.replay(dbMapper);
userService.addUser(newUser1);


 类似资料:
  • 问题内容: 我有一个方法,该方法在要测试的类的依赖项的类中返回void。 此类非常庞大,我仅使用其中的一种方法。我需要替换此方法的实现以进行测试,因为我希望它做一些不同的事情,并且需要能够访问此方法接收的参数。 我在EasyMock中找不到做到这一点的方法。我想我知道如何使用Mockito做到这一点,但除非绝对必要,否则我不想添加其他库。 问题答案: 如果我了解您要正确执行的操作,则应该可以使用:

  • 我正在测试的方法是: 为什么这给了我断言错误: java.lang.AssertionError:意外的方法调用player.sendMessage(“§9 TEST Player§B is afk.[TEST REASON]”):player.sendMessage(“§9 TEST Player§B is afk.[TEST REASON]”):预期:1,实际:0在org.easyMock.i

  • 我尝试从以下方法创建单元测试,但我找不到一个解决方案来模拟每个方法内的调用,请您帮助我使用EasyMock为这些方法创建JUnit Test: 提前感谢

  • EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。 编 写自定义的 Mock 对象需要额外的编码工作,同时也可能引入错误。EasyMock 提供了根据指定接口动态构建 Mock 对象的

  • 我有以下场景: 我想在测试中覆盖公共方法methodA()的catch块。我不想更改私有方法的可见性。是否有任何方法可以使用EasyMock实现私有方法的部分模拟?或者有没有办法改变Junit类中私有方法的行为,以便在不使用mocking的情况下抛出异常? 提前谢谢。

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