Я хочу модульного тестирование следующего методаКак использовать thenAnswer с помощью метода, который возвращает аннулируется
public void addRecord(Record record)
{
Myclass newObj = new Mycalss();
// It creates newObj object, set some values using record object.
// and it adds the newObj in daatbase.
dataReqDao.persist(newObj);
}
Я издевался dataReqDao.persist
методом, но, как я могу проверить, если правильные значения копируются в объект newObj? Я хочу получить объект newObj.
Я думаю, что thenAnswer
будет подходящим методом для извлечения аргументов метода newObj, но не знает, как использовать его метод, который возвращает void.
Update:
Я попытался
doAnswer(new Answer<Myclass>() {
public Myclass answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
return (Myclass)args[0];
}
}).when(dataReqDao.persist(any(Myclass.class)));
EDIT:
Это должно быть (спасибо David)
doAnswer(new Answer<Myclass>() {
public Myclass answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
return (Myclass)args[0];
}
}).when(dataReqDao).persist(any(Myclass.class));
В вашем обновлении скобки находятся в неправильном месте. Я не уверен, является ли это причиной вашей ошибки, потому что остальная часть выглядит нормально.Поэтому это должно быть 'doAnswer (...) .when (dataReqDao) .persist (...);' Помогает ли это? –
@ Давид: Спасибо, Дэвид. На самом деле я исправил это, но забыл обновить свой вопрос. – xyz