vertx.createHttpClient().getNow() 未调用处理程序
vertx.createHttpClient().getNow() not invoking the handler
我有以下测试方法:
private Vertx vertx;
@Before
public void setUp(TestContext context) throws IOException {
vertx = Vertx.vertx();
vertx.deployVerticle(MainVerticle.class.getName(), context.asyncAssertSuccess());
}
@After
public void tearDown(TestContext context) {
vertx.close(context.asyncAssertSuccess());
}
@Test
public void serverIsStarted(TestContext context) {
vertx.createHttpClient().getNow(8080, "localhost", "/inexistent", response -> {
System.out.println("Handler running");
Assert.assertEquals(response.statusCode(), 200);
context.assertEquals(response.statusCode(), 200);
});
System.out.println("Done");
}
摘自 this sample repo。然而,它并没有真正做任何事情。路径 inexistent
不存在,即使我删除了 setUp
中启动服务器的代码,测试仍然通过。此外,文本 "Handler running" 未打印,仅打印 "Done".
我错过了什么,为什么它什么都不做?
请记住,请求是异步处理的。您遇到的是测试 运行 在可以处理带有结果的异步回调之前完成。
根据 docs,您应该做的是创建一个 Async
实例,以向测试运行器发出信号以保持测试 运行 直到调用 complete()
在那个 Async
实例上,像这样:
@Test
public void serverIsStarted(TestContext context) {
final Async async = context.async(); // <-- create the Async instance
vertx.createHttpClient().getNow(8080, "localhost", "/inexistent", response -> {
context.assertEquals(200, response.statusCode());
async.complete(); // <-- signal this test can now terminate
});
}
此外,仅供参考 - 您的参数 assertEquals()
向后:
- 第一个参数为期望值
- 第二个参数为实际值
希望对您有所帮助!
我有以下测试方法:
private Vertx vertx;
@Before
public void setUp(TestContext context) throws IOException {
vertx = Vertx.vertx();
vertx.deployVerticle(MainVerticle.class.getName(), context.asyncAssertSuccess());
}
@After
public void tearDown(TestContext context) {
vertx.close(context.asyncAssertSuccess());
}
@Test
public void serverIsStarted(TestContext context) {
vertx.createHttpClient().getNow(8080, "localhost", "/inexistent", response -> {
System.out.println("Handler running");
Assert.assertEquals(response.statusCode(), 200);
context.assertEquals(response.statusCode(), 200);
});
System.out.println("Done");
}
摘自 this sample repo。然而,它并没有真正做任何事情。路径 inexistent
不存在,即使我删除了 setUp
中启动服务器的代码,测试仍然通过。此外,文本 "Handler running" 未打印,仅打印 "Done".
我错过了什么,为什么它什么都不做?
请记住,请求是异步处理的。您遇到的是测试 运行 在可以处理带有结果的异步回调之前完成。
根据 docs,您应该做的是创建一个 Async
实例,以向测试运行器发出信号以保持测试 运行 直到调用 complete()
在那个 Async
实例上,像这样:
@Test
public void serverIsStarted(TestContext context) {
final Async async = context.async(); // <-- create the Async instance
vertx.createHttpClient().getNow(8080, "localhost", "/inexistent", response -> {
context.assertEquals(200, response.statusCode());
async.complete(); // <-- signal this test can now terminate
});
}
此外,仅供参考 - 您的参数 assertEquals()
向后:
- 第一个参数为期望值
- 第二个参数为实际值
希望对您有所帮助!