首页 > 解决方案 > 如何为 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());

感谢您的提示朋友。

Vertx JUnit 5 集成

编辑:

在这个站点中,我找到了一个在 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 端点编写单元测试的问题寻求帮助?

标签: javaunit-testingjunitvert.xjunit5

解决方案


我在这里回答了关于 vert.x 和 junit5 的类似问题。

MockWebServer 是一个非常好的工具,可以帮助您测试包含 http 请求的代码。请参阅链接答案中的完整代码示例。


推荐阅读