gpt4 book ai didi

java - EasyMock 作废方法

转载 作者:IT老高 更新时间:2023-10-28 21:08:14 27 4
gpt4 key购买 nike

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

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

然后在我的实际测试中运行

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

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

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

运行测试时
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);

这是可行的,因为模拟对象在调用 replay() 之前处于记录模式,因此对它的任何调用都将执行默认行为(返回 null/不执行任何操作)并且有资格进行重放当调用 replay() 方法时。

我喜欢做的是确保方法调用很明显是为了一个期望是在它前面放一个小注释,如下所示:

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

关于java - EasyMock 作废方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22831523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com