我的嘲笑到位后,我收到错误:
redisDao.someMethod(notNull(), notNull()): expected 1, actual 0
如果我删除了模拟设置,那么当在调试模式下进行跟踪时,它将转到redisDao.someMethod方法,然后以空指针异常失败。
这对我来说没有意义,也不确定如何解决这个问题?
mockMaker = EasyMock.createStrictControl();
redisDaoMock = mockMaker.createMock(redisDao.class);
userService.setRedisDao(redisDaoMock);
expect(redisDaoMock.someMethod(EasyMock.<String>notNull(), EasyMock.<String>notNull())).andReturn(someReturn);
mockMaker.replay();
mockMaker.verify();
userController.get(request, response);
// assertions here
答案 0 :(得分:8)
我认为你的问题是你正在创建一个“严格”的模拟对象,它希望你调用你在expect()中放入的方法。如果您的代码没有执行预期的方法调用,它会为您提供预期的1实际0消息。
您可以使用EasyMock.createNiceMock()而不是createStrictControl,这应该会消失。或者只是确保您的代码在Expect调用中调用您告诉它的方法。
您还可能需要在期望调用的末尾添加.anytimes(),这样即使没有调用它也没关系。
This page has some good explanations and even has your error