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»