有人知道在Quarkus测试中监视Vert.x事件总线的方法吗?理想情况下,我想Assert在服务层的方法中,我们正在将事件发送到正确的地址,但有人知道这是否可能吗?
如果我只是尝试使用@InjectMock
,我会得到以下错误
io.vertx.core.eventbus.impl.EventBusImpl@5769679b is not a normal scoped CDI bean, make sure the bean is a normal scope like @ApplicationScoped or @RequestScoped
2条答案
按热度按时间ibps3vxo1#
我通过在EventBus周围创建一个应用程序作用域委托解决了这个问题。这个委托可以在Quarkus中作为普通bean进行模拟和检查。所有直接使用EventBus的bean都需要使用EventBusDelegate来代替。在您的测试中,您可以使用@InjectMock注解来注入模拟的EventBusDelegate。
deikduxw2#
如此处所建议https://github.com/quarkusio/quarkus/issues/8983
如果convertScopes为真,Quarkus会将Singleton更改为ApplicationScoped以使bean可模拟。
注意:文档说明这是一个高级设置,仅当不依赖于Singleton Bean和ApplicationScoped Bean之间的差异时才应使用