EasyMock无效方法
我正在尝试使用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);
以上是 EasyMock无效方法 的全部内容, 来源链接: utcz.com/qa/425374.html