提问者:小点点

编写测试以验证在jms监听器(Spring-Boot)中接收到的msg


我想为下面的东西编写测试;

>

  • src/main中有一个名为state-info-1的侦听器。

    它对它获得的任何消息进行一些更改,并在actiemq topicstate-info-2上发布新消息。

    我将构建一个虚拟消息并发布到actiemq topicstate-info-1

    最后验证一下,收到的主题state-info-2的消息与我预期的一样。

    我的听众就像;

    @JmsListener(destination = "state-info-1", containerFactory = "connFactory")
    public void receiveMessage(Message payload) {
        // Do Stuff and Publish to state-info-2
    }
    

    有没有可能我可以为此写测试?或者我必须用其他方式来做?

    还有我看这个https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-activemq/src/test/java/sample/activemq/SampleActiveMqTests.java

    但这不是我所期望的。

    任何正确方向的帮助或推动就足够了。

    谢谢你的时间。


  • 共1个答案

    匿名用户

    @SpringBootApplication
    public class So42803627Application {
    
        public static void main(String[] args) {
            SpringApplication.run(So42803627Application.class, args);
        }
    
        @Autowired
        private JmsTemplate jmsTemplate;
    
        @JmsListener(destination = "foo")
        public void handle(String in) {
            this.jmsTemplate.convertAndSend("bar", in.toUpperCase());
        }
    
    }
    

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class So42803627ApplicationTests {
    
        @Autowired
        private JmsTemplate jmsTemplate;
    
        @Test
        public void test() {
            this.jmsTemplate.convertAndSend("foo", "Hello, world!");
            this.jmsTemplate.setReceiveTimeout(10_000);
            assertThat(this.jmsTemplate.receiveAndConvert("bar")).isEqualTo("HELLO, WORLD!");
        }
    
    }