🎄 Happy Holidays! 🥳

Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.

Happy Holidays!

Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.

How to integration test Solace with Spring Boot AutoConfig / JmsListener

Hello

the project I'm working on needs me to integrate a receiver for Solace PubSub+ Messages with Spring Boot. The following snippet resembles my current implementation. The controller receives a message, forwards it to my usecase which extracts some headers and the payload and creates a MyMessage POJO which in turn is finally handed back to the controller.

@Component
@RequiredArgsConstructor
public class MyController {

  private final MyUseCase myUseCase;

  @JmsListener(destination = "MyQueue")
  public MyMessage forward(Message<byte[]> message) {
    return this.myUseCase.handle(message);
  }

}

The PubSub+ broker runs on Docker and has "MyQueue" configured.

Running the application and manually sending a Message on MyQueue shows that the controller is working as intended. We're running JUnit5 and Spring's MockMVC for our other controllers.

How can I test this controller with integration tests?

I see that I need a sender that posts a message on MyQueue which is then received by MyController. But how can I be sure that my Listener receives and forwards the message?

Is there a way to 'intercept' the returned MyMessage and evaluate it's fields?

Best Answer

Answers