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

回到顶部