java - 如何为 Vert.x 编写端点的 Post、Get、Put、Delete 方法 Web 客户端单元测试
问题描述
我想用 Junit 5 为 End-Points 编写一些单元测试,在 Vertx 3.8 的 Web 客户端中使用 post、get、put 和 delete 方法。但我在编写这些测试时遇到了一些问题。我访问了这个链接,但我需要更多帮助来为这些端点编写单元测试。请与我分享每个请求的样本。在配置每个注释之前,我在 init 方法中有一个数据库连接。
@BeforeEach:
DeploymentOptions options = new DeploymentOptions()
.setConfig(new JsonObject().put("http.port", port));
vertx.deployVerticle(new HttpVerticle(configuration, vertx, operations), options, context.completing());
感谢您的提示朋友。
编辑:
在这个站点中,我找到了一个在 vert.x 中编写单元测试的好示例,然后在服务处于活动状态并在 CI/CD 上工作之前开始编写我自己的端点测试。当我调用获取端点时,一切正常。但是当我想尝试 Post 端点并使用英语字符测试通过时,但是当我尝试使用波斯语字符进行 Post 端点测试时,它不会通过并出现此错误:io.vertx.core。 json.DecodeException:解码失败:无法识别的令牌“t”:期待(JSON 字符串、数字、数组、对象或令牌“空”、“真”或“假”)
@Test
public void testAddNewCountry(Vertx vertx, VertxTestContext context) {
System.out.println(port);
final String json = Json.encodePrettily(new Country("مالزی", true));
final String length = Integer.toString(json.length());
vertx.createHttpClient().post(port, "localhost", AllRoutes.COUNTRY)
.putHeader("content-type", "application/json")
.putHeader("content-length", length)
.handler(response -> {
response.bodyHandler(body -> {
response.statusCode();
context.completeNow();
});
})
.write(json)
.end();
}
所以这个网站很有帮助,但在 Post 端点我有一个问题,我没有任何放置或删除样本。我也不能使用断言来检查结果。然后我决定问一个关于如何为 Vert.x 端点编写单元测试的问题寻求帮助?
解决方案
我在这里回答了关于 vert.x 和 junit5 的类似问题。
MockWebServer 是一个非常好的工具,可以帮助您测试包含 http 请求的代码。请参阅链接答案中的完整代码示例。
推荐阅读
- apache-spark - Spark不断将偏移重置为X
- docker - 如何使用具有多个副本的卷运行 docker 服务
- fiware-orion - Orion Context Broker 如何按名称过滤对象包含关键字
- android - 在 iOS 上获取购买和订阅信息
- excel - listobjects 所需的 VBA 对象
- python-3.x - TypeError: contact() got an unexpected keyword argument 'name'
- css - Sass color lighten/darken function
- linux - 在某些条件下添加分隔符
- authentication - How to allow to unauthenticated users see some specific pages or actions pages in Cake PHP 3?
- angular - 检查反应形式中的几个值是否发生了变化