内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我正在使用带有Spring的RabbitMQ构建一个应用程序:到目前为止一直很好。定义单元测试我使用JUnit定位外部服务器。我想知道的是,是否有办法模拟RabbitMQ服务器来执行测试,如果有一种方法,那就是最好的方法。
我发现了一些帖子,但它们是在2012年甚至之前制作的......也许有更新,更容易,更有效的东西!
提前致谢
我不会试图模仿RabbitMQ服务器本身; 相反,模拟您的发布方法,渠道工厂等,以模拟错误条件(当然,还有快乐的路径)。例如,当你的FoozleEvent.publish
方法抛出时会发生什么IOError
?
要在Java世界中模拟RabbitMQ,我正在构建一个库:rabbitmq-mock。目的正是您描述的用例。您可以简单地替换amqp-client, ConnectionFactory
并且您将拥有开箱即用的大多数RabbitMQ功能,而无需使用IO(无需端口绑定)且无需启动时间。
只需在pom.xml中添加dependendy :
<dependency>
<groupId>com.github.fridujo</groupId>
<artifactId>rabbitmq-mock</artifactId>
<version>1.0.10</version>
<scope>test</scope>
</dependency>
然后,您可以通过替换通过Spring配置提供的ConnectionFactory或Spring-Boot为您提供的内容来使用它:
@Configuration
@Import(AppConfiguration.class)
class TestConfiguration {
@Bean
ConnectionFactory connectionFactory() {
return new CachingConnectionFactory(new MockConnectionFactory());
}
}
希望这会有所帮助!