Я пишу контрольный пример для сценария, при котором клиент может загружать содержимое в БД. в этом тестовом примере я предполагал, что содержимое отсутствует, поэтому будет выброшено RuntimeException(PAYLOAD_NOT_FOUND)
, а в блоке catch
я создам фиктивный контент и продолжу другой путь выполнения.
Чтобы смоделировать недостающее содержимое, я издеваюсь над getContent getter
new MockUp<CustomerContentDto>() {
@Mock
public String getContent() {
throw new RuntimeException(PAYLOAD_NOT_FOUND);
}
};
Пока все хорошо, проблема, которую мне нужно вызвать public String getContent()
после создания фиктивного содержимого, но каждый раз, когда я вызываю этот метод, mock будет выдавать new RuntimeException(PAYLOAD_NOT_FOUND);
Есть ли способ деактивировать этот макет после определенной точки выполнения?
@Test
public void uploadContent_PayloadMissing_uploadError() throws DaoException, URISyntaxException, IOException,MessageTaskException {
final String sameAccounts = "some info...";
new MockUp<CustomerContentDto>() {
@Mock
public String getContent() {
throw new RuntimeException(PAYLOAD_NOT_FOUND);
}
};
// i need to mock getContent() befor this call
objectUnderTest.handleMessage(111,sxpConnection);
new Verifications() {{
CustomerContentDto customerContentDto;
iCustomerContentDao.setApproved(anyLong, anyString, null);
minTimes = 1;
maxTimes = 1;
iCustomerContentDao.uploadContent(customerContentDto = withCapture());
maxTimes = 1;
// i need to deactivate the mock getContent() befor this call
Assert.assertEquals(customerContentDto.getContent(), "111\n\n\"Content is missing a Payload tag\"");
}};
}