我需要有关如何编写涉及RabbitMQ消息代理的集成测试的帮助。
这是整体系统架构
服务(生产者)->消息Borker(环境1)->控制器(我们的应用程序)->消息代理(环境2)->消费者设备
我计划将集成测试程序放在服务级别,在该级别我将模仿要发送到消息代理的消息。稍后,我将监听响应并断言。
尽管它是一个异步系统,但是测试同步方式似乎是一个简单的方法。
有没有更好的方法可以对我的应用程序流程进行集成测试。您能否给我一些集成测试的指导。
谢谢巴拉。
IMO几乎完全取决于您要测试的内容。通常,您的应用程序使用者应具有某种类似“ onMessage”的方法来获取消息,这是使用者触发业务流程的切入点。
如果是这样,假设将此入口点实现为bean,则可以将其注入测试类,并直接有效地绕过所有Rabbitmq集成层直接调用它。
使用此方法的一个小警告是,您必须从测试上下文中加载所有与兔子mq相关的bean。
现在,这种方法可以让您测试单个服务的业务逻辑,这很好。
但是,当您要测试时,它不够用:
为了解决这些问题,您可能要考虑使用RabbitMQ和服务部署整个环境,并使用域知识来正确断言(例如,当使用者获取消息并对其进行处理时-它会更新数据库),因此您可以进行测试等待X秒钟,然后直接轮询数据库或通过调用服务公开的一些API来轮询数据库。