我能够重现测试“挂起”的问题,当这一点:
JsonArray(msg.result().body().toString())
…无法将响应体反序列化为JSON数组。要验证这一点,请注释掉整个断言并查看测试是否在之后完成。如果是这样,那就应该缩小这一具体问题的范围。
值得注意的是,由于您使用的是Rx版本的API,因此可以使用标准Rx类型(而不是
Handler
). 你的测试按照这些行重写(减去
JsonArray
可能看起来像这样:
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;
import io.vertx.reactivex.core.Vertx;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(VertxUnitRunner.class)
public class Blah {
private Vertx vertx;
@Before
public void setUp(TestContext context) {
vertx = Vertx.vertx();
vertx.eventBus().consumer("HANDLER_ADDRESS").handler(message -> {
message.reply("PONG!");
});
}
@Test
public void computeSomethingByNullPlan(TestContext context) {
final String query = "PING?";
final Async async = context.async();
vertx.eventBus().rxSend("HANDLER_ADDRESS", query)
.subscribe(
message -> {
context.assertEquals("PONG!", message.body().toString());
async.complete();
},
context::fail
);
}
}
我希望这有助于澄清事情!