我正在測試我的userService類方法,但我測試的方法調用另一個方法。測試我的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(..)
}
爲什麼你需要模擬出方法,如果它也在userService中? – jeff
@jeff看到我的更新,即使我嘲笑響應,返回值爲空。 – Blankman
將userDaoMock連接到正在測試的userService的代碼在哪裏? – jeff