如何模拟春季rabbitmq/amqp,以便在尝试自动创建交换/队列时在Spring Boot Test期间不会失败?如何在春季启动测试中模拟弹簧amqp /兔子
鉴于我有一个简单RabbitListener
将导致队列和交换被自动创建这样的:
@Component
@RabbitListener(bindings = {
@QueueBinding(
value = @Queue(value = "myqueue", autoDelete = "true"),
exchange = @Exchange(value = "myexchange", autoDelete = "true", type = "direct"),
key = "mykey")}
)
@RabbitListenerCondition
public class EventHandler {
@RabbitHandler
public void onEvent(Event event) {
...
}
}
一个简单的Spring引导检测过程中,像这样:
@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = { Application.class })
@Autowired
private ApplicationContext applicationContext;
@Test
public void test() {
assertNotNull(applicationContext);
}
}
它会失败与:
16:22:16.527 [SimpleAsyncTaskExecutor-1] ERROR o.s.a.r.l.SimpleMessageListenerContainer - Failed to check/redeclare auto-delete queue(s).
org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:62)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:309)
在这个测试中,我不在乎兔子/ AMQP,那么我该如何嘲笑整个兔子/ AMQP呢?
奇怪的是,它用于1.5.6 - 我只需要像这样配置一个Bean:Mockito.mock(AmqpTemplate.class) - 但现在1.6。1这不再工作:( – domi
如果我是正确的,这也意味着我将无法使用任何SpringBoot测试用例与一个完整的容器,当我有这样的配置:( – domi
嘲笑模板很容易;这是嘲弄经纪人的回应(确认,退货,交付),涉及更多,解释为“不再有效” - “AmqpTemplate”是一个简单的“界面”; 1.6中没有任何东西会改变它的嘲讽能力。对于'@ RabbitListener',你将不得不模拟一个监听器容器 –