【发布时间】:2021-04-06 12:45:33
【问题描述】:
有人知道在 Quarkus 测试中监视 Vert.x 事件总线的方法吗?理想情况下,我想断言,在服务层的一个方法中,我们将一个事件发送到正确的地址,但是有人知道这是否可能吗?
如果我只是尝试使用@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
【问题讨论】:
-
我对 vert.x 没有特别的经验,但难道不能注册一个(测试范围的)bean,监听
EventBus并监视这个 bean 吗?跨度> -
是的,这绝对有效 - 我也猜你也可以只监视使用事件的实际 bean(我们使用事件总线进行一些异步处理)。不理想,但工作做得足够好。谢谢。
-
取决于您要验证的内容,不是吗?最终结果是侦听器被调用。方法由 vert.x 提供。我认为我们可以信任 vert.x 来完成它的工作,因此我们不需要测试它的行为。所需的行为是调用侦听器。更“完整”的方法是验证此侦听器触发的操作(这可能会导致集成甚至端到端测试)。
-
是的,公平点。我们还将测试消费事件后是否执行正确的操作,但这将在单独的测试套件中进行,以避免服务测试变得臃肿。
标签: mockito quarkus vertx-eventbus