userServiceクラスメソッドをテストしていますが、テストしているメソッドが別のメソッドを呼び出しています。
@Test
public void testSomething() {
HelloWorldResponse hwResponse = ....;
expect(userDaoMock.helloWorldCall(....).andReturn(hwResponse);
reploy();
UserResponseCode response = userService.register(user);
assertEquals(UserResponseCode.OK, response);
}
ここで、registerメソッドがuserServiceクラスの別のメソッドを呼び出すとしましょう。その呼び出しをどのようにモックできますか?
私が理解していることから、私はuserServiceクラス全体をモックでラップしていないので、それを行うことはできませんか?
アップデート
登録メソッドのjunitテストをデバッグすると、次のように表示されます。
SomeThing thing = helloWorldCall(...); // userService.helloWorldCall(...);
これで、メソッドhelloWorldCallはuserDaoが返すものを返すだけで、テストでそれをすでにモックアップしていますが、何らかの理由で、実行をトレースするとnullが返されるため、thing==nullになります。
なぜそれはnullなのですか、それは私のモックによって返される値を持つべきではありませんか?
UserService#helloWorldCallコードは以下のとおりです。ここでも、userDaoが返すものを返すだけです。これも、ユニットテストでハードコーディングした応答を返す上記のようにモックアップしています。単体テストをトレース/デバッグするときにnullになるのはなぜですか?
public HelloWordResponse helloWorldCall(...) {
return userDao.helloWorldCall(..)
}