Почему макет моего второго метода влияет на первый метод? - PullRequest
0 голосов
/ 06 мая 2020

Класс, который я написал, имеет два метода, второй метод содержит имитацию принудительного исключения. Когда я запускаю тесты по отдельности, они оба проходят успешно, но когда они запускаются вместе, в первом методе вызывается принудительное исключение. Я пробовал tearDown, но этот метод недоступен.

public class LambdaHandlerTest {

    @Test
    @DisplayName("Testing the handleRequest")
    void testTheHandleRequest() throws URISyntaxException, IOException {
        new MockUp<ProviderEvents>(){

            @Mock
            public File fetchFile(String bucket, String jobName, Context context) throws IOException{
                File file = new File ("src/test/resources/testEmailFile.txt");

                return file;
            }
        };

        new MockUp<AbstractAmazonSimpleEmailService>(){

            @Mock
            SendEmailResult sendEmail(SendEmailRequest var1){

                return null;
            }
        };

        LambdaHandler lambdaHandler = new LambdaHandler();

        assertEquals ("Finished handleRequest()", lambdaHandler.handleRequest(generateS3Event(), null));
    }

    @Test
    @DisplayName("Test catch block of handleRequest")
    void testCatchBlockHandleRequest() throws IOException, URISyntaxException {
        LambdaHandler lambdaHandler = new LambdaHandler();
        S3Event s3Event = generateS3Event();

        new MockUp<ServiceEvents>() {
            @Mock
            public Boolean extractJson(S3Event event, Context context) throws Exception {
                throw new Exception("Forced Exception");
            }
        };

        assertEquals("Error with handleRequest()", lambdaHandler.handleRequest(s3Event, null));
    }

    public S3Event generateS3Event() throws URISyntaxException, IOException {
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(Objects.requireNonNull(classLoader.getResource("s3Event.json")).toURI());
        S3Event s3Event = new ObjectMapper().readValue(file, S3Event.class);

        return s3Event;
    }
}

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 12 мая 2020

Я не уверен, почему это произошло, но в конце я использовал @order, чтобы убедиться, что тест с макетом, который генерировал принудительное исключение, был запущен последним. Сделал свое дело.

0 голосов
/ 06 мая 2020

Вместо того, чтобы использовать два метода, вы можете использовать метод secod для первого и проверить, выполняются ли оба утверждения assert

...