我正在测试我的 userService 类方法,但我正在测试的方法调用了另一个方法。
@Test
public void testSomething() {
HelloWorldResponse hwResponse = ....;
expect(userDaoMock.helloWorldCall(....).andReturn(hwResponse);
reploy();
UserResponseCode response = userService.register(user);
assertEquals(UserResponseCode.OK, response);
}
现在说我的注册方法调用了我的 userService 类中的另一个方法,我该如何模拟该调用?
据我了解,我不能这样做,因为我没有将整个 userService 类包装在一个模拟中,对吗?
更新
当我调试我的注册方法的 junit 测试时,我看到了这个:
SomeThing thing = helloWorldCall(...); // userService.helloWorldCall(...);
现在方法 helloWorldCall 只返回 userDao 返回的内容,我已经在我的测试中模拟了它,但是由于某种原因,当我跟踪执行时它返回 null,所以 thing == null。
为什么它为空,它不应该具有我的模拟返回的值吗?
下面是 UserService#helloWorldCall 代码,它再次简单地返回 userDao 返回的内容,正如您在上面看到的,它返回了我在单元测试中硬编码的响应。为什么在我跟踪/调试单元测试时它为空?
public HelloWordResponse helloWorldCall(...) {
return userDao.helloWorldCall(..)
}