Java RabbitListenerTestHarness出现问题,无法工作
我试图嘲笑@RabbitListener。为此,我使用RabbitListenerTestHarness,但这似乎不起作用。 下面是我的项目结构 主类Java RabbitListenerTestHarness出现问题,无法工作,java,spring,rabbitmq,junit5,spring-amqp,Java,Spring,Rabbitmq,Junit5,Spring Amqp,我试图嘲笑@RabbitListener。为此,我使用RabbitListenerTestHarness,但这似乎不起作用。 下面是我的项目结构 主类 @Component public class ABC { @Autowired private AmqpTemplate amqpTemplate; @RabbitListener(id="id", queues="${queue}") public void receiveMessage(Stri
@Component
public class ABC {
@Autowired
private AmqpTemplate amqpTemplate;
@RabbitListener(id="id", queues="${queue}")
public void receiveMessage(String message) {
publishMsg(message);
}
public void publishMsg(String msg){
amqpTemplate.convertAndSend("exchange", "",msg);
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class ABCTest {
@Autowired
private RabbitListenerTestHarness harness;
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendtoQueue() throws Exception {
ABC listener = this.harness.getSpy("id");
assertNotNull(listener);
LatchCountDownAndCallRealMethodAnswer answer = this.harness.getLatchAnswerFor("id", 1);
doAnswer(answer).when(listener).receiveMessage(any(String.class));
String data = getMockString("src/test/resources/rabbitMQ-data.json");
this.rabbitTemplate.convertAndSend("Queue-name", data);
//assertTrue(answer.await(10));
verify(listener,times(1)).receiveMessage("data");
}
测试类
@Component
public class ABC {
@Autowired
private AmqpTemplate amqpTemplate;
@RabbitListener(id="id", queues="${queue}")
public void receiveMessage(String message) {
publishMsg(message);
}
public void publishMsg(String msg){
amqpTemplate.convertAndSend("exchange", "",msg);
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class ABCTest {
@Autowired
private RabbitListenerTestHarness harness;
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendtoQueue() throws Exception {
ABC listener = this.harness.getSpy("id");
assertNotNull(listener);
LatchCountDownAndCallRealMethodAnswer answer = this.harness.getLatchAnswerFor("id", 1);
doAnswer(answer).when(listener).receiveMessage(any(String.class));
String data = getMockString("src/test/resources/rabbitMQ-data.json");
this.rabbitTemplate.convertAndSend("Queue-name", data);
//assertTrue(answer.await(10));
verify(listener,times(1)).receiveMessage("data");
}
}
在上面运行时,它给出如下错误
Wanted but not invoked:
customPublisherSubscriber.receiveMessageFromResponseQ(
"data"
);
-> at aero.sita.sp.spm.service.ABC.testSendtoQueue(CustomPublisherSubscriberTest.java:67)
Actually, there were zero interactions with this mock.
at aero.sita.sp.spm.service.ABC.testSendtoQueue(CustomPublisherSubscriberTest.java:67)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
我指的是
我正在努力理解,因为我正在尝试验证spy对象是否接收到消息,但它正在报告与mock对象相关的问题。请您在这方面协助我。您缺少启用线束所需的
@RabbitListenerTest
而且
在您的测试或代码中,我看不到对该方法的任何引用