4

次の方法がある場合:

public void handleUser(String user) {

    User user = new User("Bob");
    Phone phone = userDao.getPhone(user);
    //something else
}

EasyMock を使用してモックでこれをテストしているとき、とにかく、次のように UserDao モックに渡す User パラメータをテストできますか?

User user = new User("Bob");
EasyMock.expect(userDaoMock.getPhone(user)).andReturn(new Phone());

上記のテストを実行しようとすると、予期しないメソッド呼び出しについて不平を言いますが、これは、メソッドで作成された実際のユーザーが、渡したものと同じではないためです...それについて正しいですか?

または、 UserDao に渡すパラメーターをテストできる最も厳密な方法は次のとおりです。

EasyMock.expect(userDaoMock.getPhone(EasyMock.isA(User.class))).andReturn(new Phone());
4

3 に答える 3

3

Userオブジェクトが予想される呼び出しと実際の の呼び出しで異なるため、予期しないメソッド呼び出しがスローされていることは間違いありませんgetPhone

@laurence-gonsalves がコメントで言及しているようUserに、便利なequalsメソッドがある場合は、2 つのオブジェクトが等しいことを確認する必要があるEasyMock.eq(mockUser)呼び出し内で使用できます。getPhoneUser

EasyMock Documentation、特に「引数マッチャーを使用した柔軟な期待」セクションをご覧ください。

于 2010-09-22T09:19:50.740 に答える
1

使用できます

EasyMock.expect(userDaoMock.getPhone(EasyMock.anyObject())).andReturn(new Phone());

これで問題は解決すると思います。

于 2013-04-16T06:32:17.450 に答える
0

Yeswanth Devisetty による回答の少しの変更

EasyMock.expect(userDaoMock.getPhone(EasyMock.anyObject(User.class))).andReturn(new Phone());

これで問題は解決します。

于 2014-12-09T11:44:14.107 に答える