我正在尝试使用RabbitMQ分离将电子邮件发送到单独服务中的代码,这些服务之间可以进行通信。
目前,我有集成测试来测试我们的HTTP端点,就像这样:
1. Create fake data in a dockerized mysql container. So that the DB is in the correct state
2. Perform testable action such as: User needs to approve a contract
3. Expect that the `contract.status` is now `approved`
4. Query a local SMTP server (Mailhog) to see if the email is there
5. Expect that email subject/body contains what I'm expecting
现在,我计划将消息队列加入混合。我应该仍然像这样编写集成测试吗?我应该如何编写测试,以便在执行此操作时仍可以测试是否已发送电子邮件。
答案 0 :(得分:0)
如果您负责整个解决方案,则绝对应该为整个解决方案编写集成测试。
如Martin Fowler所述:
集成测试确定独立开发的软件单元相互连接时是否正常工作。
编写测试取决于您的具体实现。我认为无论MQ是否存在,您都必须创建测试数据并执行操作(步骤1至3),然后检查结果。