Micronaut:测试POST请求

问题描述 投票:0回答:1

在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)。

rest post micronaut
1个回答
0
投票

通常,当您执行POST动作时,您期望随请求一起发送一个正文。在您的示例中,您不接受任何POST正文,但仍然需要在单元测试中通过任何检查。

您可以通过以下方式实例化HttpRequest对象:

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

您不能传递null,它必须是一些非空值(如空字符串。)

© www.soinside.com 2019 - 2024. All rights reserved.