Сам тест:
Код: Выделить всё
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ApiApplicationTests {
@Autowired
TestRestTemplate restTemplate;
@Test
void returnsASingleBook() {
ResponseEntity response = restTemplate.getForEntity("/books/99", String.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
}
}
Код: Выделить всё
ApiApplicationTests > returnsASingleBook() STANDARD_OUT
2025-01-25T20:40:36.144+03:00 INFO 14872 --- [api] [o-auto-1-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-01-25T20:40:36.144+03:00 INFO 14872 --- [api] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-01-25T20:40:36.145+03:00 INFO 14872 --- [api] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
ApiApplicationTests > returnsASingleBook() PASSED
Измененный тест (ничего) было изменено, за исключением «HttpStatus.NOT_FOUND»:
Код: Выделить всё
@Test
void returnsASingleBook() {
ResponseEntity response = restTemplate.getForEntity("/books/99", String.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}
ApiApplicationTests > returnsASingleBook() STANDARD_OUT
2025-01-25T20:55:27.726+03:00 INFO 17656 --- [api] [o-auto-1-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-01-25T20:55:27.726+03:00 INFO 17656 --- [api] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-01-25T20:55:27.727+03:00 INFO 17656 --- [api] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
ApiApplicationTests > returnsASingleBook() FAILED
org.opentest4j.AssertionFailedError:
expected: 404 NOT_FOUND
but was: 200 OK
at app//librarysoft.api.ApiApplicationTests.returnsASingleBook(ApiApplicationTests.java:20)
< /code>
Чтобы подтвердить, что нет другого контроллера, который бы мог выполнять работу для меня, я написал свой собственный, однако выход не изменился. В контроллере i намеренно return 404 не найден, так что, когда мой тест проходит, я знаю, что это было сделано этим контроллером.
Контроллер:
@RestController
public class BookController {
@GetMapping("books/{requestedId}")
public ResponseEntity findById(@PathVariable Long requestedId){
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
}
< /code>
Может быть, я что -то делаю не так? Я попытался проверить все и до сих пор не могу прийти к выводу, почему это может произойти.
Подробнее здесь: https://stackoverflow.com/questions/793 ... is-present