TestRestTemplate возвращает 200 OK по запросу GET, когда контроллер не присутствуетJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 TestRestTemplate возвращает 200 OK по запросу GET, когда контроллер не присутствует

Сообщение Anonymous »

Я пытаюсь разработать простой API книг для изучения Spring Boot. Я написал (надеюсь) неудачный тест, чтобы проверить, возвращает ли TestRestTemplate HttpStatus значение ОК. Конечно, я сделал это до написания самого RestController, чтобы быть уверенным, что он выйдет из строя первым. Однако даже без какого-либо RestController он возвращает 200 OK, а не ожидаемое 404 NOT FOUND.
Сам тест:

Код: Выделить всё

@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
После этого я изменил тест, чтобы ожидать результата 404 NOT FOUND, так как мне нужно исправить тест.
Измененный тест (ничего) было изменено, за исключением «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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»