Mock-Objekt erstellen innerhalb einer Methode
Wenn ich die folgende Methode:
public void handleUser(String user) {
User user = new User("Bob");
Phone phone = userDao.getPhone(user);
//something else
}
Wenn ich mich dieses zu testen mit mocks mit EasyMock, gibt es trotzdem konnte ich testen der Benutzer-parameter ich übergeben in meine UserDao-mock so:
User user = new User("Bob");
EasyMock.expect(userDaoMock.getPhone(user)).andReturn(new Phone());
Als ich versuchte, führen Sie den oben beschriebenen test, es beschwert sich über die unerwartete Aufruf der Methode, die ich vermute, weil die eigentlichen Nutzer erstellt in der Methode nicht die gleichen wie die, die ich bin übergeben...bin ich richtig um?
Oder ist der strengste Weise konnte ich den parameter testen ich bin vorbei in den UserDao ist nur:
EasyMock.expect(userDaoMock.getPhone(EasyMock.isA(User.class))).andReturn(new Phone());
- Hat Ihr
User
Klasse haben eineequals
Methode?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig, dass der unerwartete Aufruf der Methode wird ausgelöst, weil die
User
Objekt ist der Unterschied zwischen der erwarteten und tatsächlichen Anrufe zugetPhone
.Als @laurence-gonsalves erwähnt im Kommentar, wenn
User
hat eine nützlicheequals
Methode, die Sie nutzen könntenEasyMock.eq(mockUser)
im inneren der erwartete Anruf zugetPhone
sollte überprüfen, dass es die beidenUser
Objekts gleich sind.Haben Sie einen Blick auf die EasyMock Dokumentation, insbesondere in dem Abschnitt "Flexible Erwartungen mit dem Argument Matcher".
Können Sie
Ich denke, das sollte dein problem lösen.
Einer kleinen änderung in der Antwort Yeswanth Devisetty
EasyMock.expect(userDaoMock.getPhone(EasyMock.anyObject(User.class))).andReturn(new Phone());
Das wird das problem lösen.