Я пытаюсь написать модульный тест для метода уровня обслуживания, который должен возвращать сообщение, если запрашиваемый элемент не найден в БД. Тест, который я написал, не проходит, и я не уверен, почему.
Я использую 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;
}
Проверка не удалась, выдав мне правило недопустимого исключения, записанное на уровне службы - почему тест не пройден, если я проверяю, что идентификатор ответа не существует?