Jmockit активирует и деактивирует объект MockUp в том же методе - PullRequest
0 голосов
/ 15 ноября 2018

Я пишу контрольный пример для сценария, при котором клиент может загружать содержимое в БД. в этом тестовом примере я предполагал, что содержимое отсутствует, поэтому будет выброшено 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\"");
    }};
}
...