Micronaut: тестовый запрос POST - PullRequest
1 голос
/ 31 января 2020

В моем приложении Micronaut у меня есть простой контроллер REST:

public class Response {
    private String code;

    public Response(String code) {
        this.code = code;
    }
}

@Controller("/api/test")
public class TestController {

    @Post("/")
    public Response index() {
        return new Response("OK");
    }
}

Как я могу проверить эту точку? Я пытался использовать

@MicronautTest
public class TestControllerTest {
    @Inject
    EmbeddedServer server;

    @Inject
    @Client("/")
    HttpClient client;

    @Test
    void testResponse() {
        String response = client.toBlocking()
                .retrieve(HttpRequest.POST("/api/test/"));  // FIXME `HttpRequest.POST` requires body
        assertEquals("{\"code\": \"OK"\}", response);
    }

, но для HttpRequest.POST требуется указать дополнительный аргумент body. В моем случае нет тела для отправки. (В реальном коде это запрос инициализации нового объекта и, следовательно, он должен быть POST).

1 Ответ

0 голосов
/ 31 января 2020

Обычно, когда вы реализуете действие POST, вы ожидаете, что есть тело, отправленное с запросом. В вашем примере вы не принимаете никакого тела POST, но вам все равно нужно пройти что-либо в модульном тесте.

Вы можете создать экземпляр объекта HttpRequest следующим образом:

HttpRequest.POST("/api/test/", "");

Вы не можете передать null, это должно быть не ненулевое значение (например, пустая строка).

...