首页 > 解决方案 > 如何测试请求是否增加了指标,而在 Vert.x 中没有得到任何响应?

问题描述

我的 Vert.x 服务器的工作是在收到一些无效请求时不发回任何响应,而只会增加相关的指标。我该如何测试它?

下面的代码不起作用,因为我们永远不会得到响应,处理程序的代码永远不会被执行——我刚刚发布它是为了向您展示我在测试中想要什么。

@Test
void invalidUrlTest(Vertx vertx, VertxTestContext testContext) {
    HttpRequest<String> request = WebClient
            .create(vertx, this.webClientOptions)
            .get(8080, "localhost", "/someinvalidaddress/")
            .as(BodyCodec.string());
    request.send(s -> {assertThat(meterRegistry.counter("invalid.request.counter")).isEqualTo(1.0);
            });

标签: javarx-java2vert.xjunit5micrometer

解决方案


不确定为什么不调用您的句柄(也许您的测试由于缺少 ctx.async() 而下降?)但无论如何,您可以尝试使用 httpClient 进行调用并在做出断言时设置异常处理程序:

@Test
void invalidUrlTest(Vertx vertx, VertxTestContext ctx) {
    Async async = ctx.async();
    HttpClient client = vertx.createHttpClient();
    client.get(8080,"localhost","/someinvalidaddress/")
      .exceptionHandler(ex -> {
        assertThat(meterRegistry.counter("invalid.request.counter")).isEqualTo(1.0);
        async.complete();
      }).end();
}

推荐阅读