JUnit Mocito Sprinboot UnitTest не удалось - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь написать модульный тест для метода уровня обслуживания, который должен возвращать сообщение, если запрашиваемый элемент не найден в БД. Тест, который я написал, не проходит, и я не уверен, почему.

Я использую Springboot 2.1.6 Java 8

<!--Testing-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>

TEST


@ExtendWith(SpringExtension.class)
@SpringBootTest
public class HB357ServiceTest {

    @Mock
    private HB357Repository repository;

    @InjectMocks
    private HB357Service service;

@Test
    @DisplayName("ResponseId Does Not Exist")
    void testGetSurveyByResponseIdNotFound (){

        when(repository.findByResponseId("R_2agzc6I4T7TbPX0")).thenReturn(null);
        HB357 responseDoesntExist = service.getSurveyByResponseId("R_2agzc6I4T7TbPX0");
        assertEquals("Response ID not found", service.getSurveyByResponseId("R_2agzc6I4T7TbPX0") );
    }

Я также пытался изменить assertEquals на assertEquals(null, service.getSurveyByResponseId("R_2agzc6I4T7TbPX0"),Response ID not found" );

МЕТОД ОБСЛУЖИВАНИЯ

public HB357 getSurveyByResponseId (String responseId){
            HB357 survey = hb357Repository.findByResponseId (responseId);
            if(survey == null){
                throw new InvalidIdException(responseId + " does not exist.");
            }

            return survey;
        }

Проверка не удалась, выдав мне правило недопустимого исключения, записанное на уровне службы - почему тест не пройден, если я проверяю, что идентификатор ответа не существует?

1 Ответ

2 голосов
/ 27 марта 2020

Вот как вы проверяете, генерируется ли исключение в Junit5

@Test
@DisplayName("ResponseId Does Not Exist")
void testGetSurveyByResponseIdNotFound (){

     when(repository.findByResponseId("R_2agzc6I4T7TbPX0")).thenReturn(null);
     InvalidIdException thrown = Assertions.assertThrows(InvalidIdException.class, () -> service.getSurveyByResponseId("R_2agzc6I4T7TbPX0"));
     assertTrue(thrown.getMessage().contains("does not exist"));
}
...