如何编写 Post、Get、Put、Delete 方法 Web 客户端单元测试 Vert.x 的端点

How to write Post, Get, Put, Delete method web client unit test for Vert.x for end-points

我想用 Junit 5 为端点编写一些单元测试,在 Vertx 3.8 的 Web 客户端中使用 post、get、put 和 delete 方法。但是我在编写这些测试时遇到了一些问题。我访问了这个 link 但我需要更多帮助来为这些端点编写单元测试。请与我分享每个请求的示例。 我有一个数据库连接,在每个注释之前的 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 integration

编辑:

在这个 site 中,我在 vert.x 中找到了编写单元测试的一个很好的示例,然后在服务运行并在 [=34= 上工作之前开始编写我自己的端点测试].当我调用 get 端点时,一切正常。但是当我想尝试 Post 端点并使用英语字符测试通过时,但是当我尝试使用波斯语字符进行 Post 端点测试时,它不会通过并得到这个错误:io.vertx.core.json.DecodeException:无法 decode:Unrecognized 令牌 't':期待(JSON 字符串、数字、数组、对象或令牌 'null', 'true' 或 'false')

@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 here 上回答了类似的问题。

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