Ich brauche eine Methode zu testen, die Car
Objekt erstellt und CarDao
zu speichern verwendet es in der Datenbank. Eine andere Methode wird Car
Objekt erstellt, aber wenn CarDao
wird dann simuliert null
anstelle der richtigen User
Objekt zurückgegeben. Das ist mein Code.Warum Mockito.when (...). DoReturn (...) funktioniert nicht wie erwartet, wenn es von Mockito.doAnswer (...)
Mockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocationOnMock) throws Throwable {
lastCarId++;
Car car = (Car) invocationOnMock.getArguments()[0];
// here car.getUser() returns correct user object
car.setId(lastCarId);
Mockito.when(carDao.getById(car.getId())).thenReturn(car);
return null;
}
}).when(carDao).persist(Mockito.any());
Warum carDao.getById(carId).getUser()
gibt null zurück? Und was muss ich tun, um das vollständige Objekt mit dem korrekten user
Feldwert zu erhalten?
Aktualisiert
carDao
Nutzung:
Car car = carService.create("car name1", "color", "year", user); // in this method called carDao.persist(...);
car.setColor("color2");
carService.findById(car.getId());
// this method calls carDao.getById(carId)
// and comapres with authenticated user ID.
// But carDao.getById(carId) returns car with user == null
Im Folgenden ist der Teil der CarService
Klasse, wo der Code Nullpointer wirft.
// carService.findById(...) method
public Car findById(Car id) {
Car car = carDao.getById(id);
User carUser = car.getUser(); // returns null
User currentUser = accountService.getAuthenticatedUser(); // returns correct user object
if (!carUser.getId().equals(currentUser.getId())) { // throws NullPointerException
return null;
}
return car;
}
Danke.
Ist Ihr 'User' Objekt in Ihrem' car' Objekt festgelegt, das Sie aus 'invocationOnMock.getArguments() [0];'? Wenn nicht, muss überprüft werden, warum es null ist – Draken
@Draken, Ja 'User' Objekt wird in dem 'Auto'-Objekt gesetzt, das ich von' invocationOnMock.getArguments() [0]; ' –
abgerufen habe carDao.getById (carId) .getUser() 'Eigenschaft? Können wir Ihre Abteilung sehen, wo das heißt? – Draken