Как ro исправить "java.lang.AssertionError: ожидается: <String>, но было: <null>"? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь проверить свой сервис, и в какой-то момент я получил сообщение об ошибке при выполнении assertEquals

Это мой тест

@Test
    public void createNewCommentCreatesNewDTOIfNoDTOExists() {
        CommentDTO commentDTO = mock(CommentDTO.class);
        MergedScopeKey mergedScopeKey = mock(MergedScopeKey.class);

        //set merged scope key
        sut.setInput(mergedScopeKey);
        String commentText = "commentText";

        //define behaviour
        when(commentApplicationService.createCommentDTO(mergedScopeKey, commentText)).thenReturn(commentDTO);

        sut.createNewComment(commentText);

        //test the functionality
        assertNotNull(commentDTO);
        assertEquals(commentText, commentDTO.getCommentText());

        //test the behavior
        verify(commentApplicationService).createCommentDTO(mergedScopeKey, commentText);

    }

И это мой метод, который я хотел проверить:

protected void createNewComment(String commentText) {

        CommentDTO commentDTO = commentApplicationService.getDTOComment(mergedScopeKey);
        if (commentDTO == null) {
            commentApplicationService.createCommentDTO(mergedScopeKey, commentText);
        } else {
            updateComment(commentDTO, commentText);
        }

    }

У вас есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 09 мая 2019

Вы определяете поведение:

when(commentApplicationService.createCommentDTO(mergedScopeKey, commentText)).thenReturn(commentDTO);

Но в своем тесте вы вызываете:

CommentDTO commentDTO = commentApplicationService.getDTOComment(mergedScopeKey);

Это другой метод, здесь вы получаете ноль.

Дажеесли вы исправите это, вы вызываете updateComment.Весьма маловероятно, что ваш производственный код устанавливает ожидания для переданного в макете, поэтому вы всегда получите null от commentDto.getCommentText ()

Рассмотрите возможность использования реального класса вместо макета для классов DTO.

...