Я хочу, чтобы в рамках теста JUnit убедиться, что метод @StreamListener
вызывается через RabbitMQ.
У меня есть работающий проект здесь , созданный только для этот вопрос (минимально воспроизводимый), в котором есть пустой тест JUnit, который я хотел бы удостовериться, может попасть в мой метод StreamListener, а затем было вызвано что-то вроде проверки автопроводной службы. application.properties настроен.
Я также выложу здесь некоторый код.
DemoListener. java
package com.example.demo.listeners;
import com.example.demo.dto.DemoDTO;
import com.example.demo.exchanges.DemoExchange;
import com.example.demo.service.DemoService;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
@EnableBinding(DemoExchange.class)
public class DemoListener {
DemoService demoService;
public DemoListener(DemoService demoService) {
this.demoService = demoService;
}
@StreamListener(target = "demo_channel")
public void consume(DemoDTO demoDTO) {
this.demoService.log_params(demoDTO.getParam1(), demoDTO.getParam2(), demoDTO.getParam3());
}
}
DemoListenerTest. java
package com.example.demo.listeners;
import com.example.demo.service.DemoService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
public class DemoListenerTest {
private static final String QUEUE_NAME = "demo";
private static final String EXCHANGE_NAME = "example.topic.exchange";
private static final String ROUTING_KEY = "example.routing.key";
@Autowired
DemoService demoService;
@Test
public void test_consume(){
//TODO how to trigger @StreamListener method during test and then verify that demoService was called once?
}
}