【问题标题】:Micronaut: Test POST requestMicronaut:测试 POST 请求
【发布时间】:2020-01-31 20:27:14
【问题描述】:

在我的 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");
    }
}

如何测试这个 edpoint?我尝试使用

@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】:

    通常,当您实现一个 POST 操作时,您希望有一个与请求一起发送的正文。在您的示例中,您不接受任何 POST 正文,但您仍然需要通过单元测试中的任何内容。

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2017-10-28
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 2015-07-25
      • 2019-06-16
      相关资源
      最近更新 更多