在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)。
通常,当您执行POST动作时,您期望随请求一起发送一个正文。在您的示例中,您不接受任何POST正文,但仍然需要在单元测试中通过任何检查。
您可以通过以下方式实例化HttpRequest
对象:
HttpRequest.POST("/api/test/", "");
您不能传递null
,它必须是一些非空值(如空字符串。)