У меня есть код, в котором мне нужно передать любой экземпляр фиктивного объекта некоторого типа в метод, и я хочу, чтобы тот же экземпляр фиктивного экземпляра возвращал некоторые значения.
Поскольку это пустой метод, я использую doAnswer
, чтобы установить некоторые значения для переданного аргумента. В этом случае аргумент является поддельным объектом.
Теперь вопрос в том, есть ли способ, которым я могу установить значение для смоделированного объекта и использовать тот же экземпляр для подтверждения чего-либо?
Я пытался с doAnswer
для метода void
. Есть ли другой способ добиться этого?
doAnswer(new Answer() {
ManageKit manageKit = new ManageKit();
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Object[] arguments = invocation.getArguments();
if (arguments != null && arguments.length == 1 && arguments[0] != null ) {
manageKit = (ManageKit)arguments[0];
manageKit.setStudySchemaEventId(12);
}
return manageKit;
}
}).when(mockManageKitsDao).retrieveInterventionEventId(any(ManageKit.class), any(Connection.class));
TileInfo tileInfo = doubleBliService.getTileInfo(9500, 5);
assertThat(manageKit.getStudySchemaEventId()).isEqualTo(12);
Я не могу передать объект ManageKit
напрямую, так как он создает объект внутри метода. что-то вроде ниже:
public TileInfo getTileInfo(int studyId, int caseDetailId) {
.......
........
ManageKit manageKit = new ManageKit();
manageKit.setCaseDetailId(caseDetailId);
manageKitsDao.retrieveInterventionEventId(manageKit, connection);
int armStudySchemaEventId = 0;
if (manageKit.getStudySchemaEventId() != null && manageKit.getStudySchemaEventId() != 0) {
armStudySchemaEventId = manageKit.getStudySchemaEventId();
}