Writing tests to verify received msg in jms listener (Spring-Boot)

孤街醉人 提交于 2019-12-04 22:11:55

问题


I want to write test for something like below;

  1. There is a listener called state-info-1 in src/main.

  2. It does some changes to any message it gets and publishes the new message on activemq topic state-info-2.

  3. I will build a dummy message and publish on to activemq topic state-info-1.

  4. Finally verify that, the received message on topic state-info-2 is like i expected.

My Listeners are like;

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

Is it possible i can write test for this? Or i have to do it in some other way?

Also, i looked at this : https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-activemq/src/test/java/sample/activemq/SampleActiveMqTests.java

But this is not what i am expecting.

Any help or push in the right direction will be enough.

Thank you for your time.


回答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());
    }

}

and

@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!");
    }

}


来源:https://stackoverflow.com/questions/42803627/writing-tests-to-verify-received-msg-in-jms-listener-spring-boot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!