Как смоделировать сообщение кролика в Spring StreamListener? - PullRequest
1 голос
/ 17 января 2020

Я хочу, чтобы в рамках теста 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?
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...