Макет соединения с RabbitMQ - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть приложение Spring с Spring AMQP. Я хочу запустить тест JUnit, который запускает Spring с базой данных H2.

Но для Spring AMQP я получаю следующее исключение при запуске:

 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.amqp.core.AmqpAdmin]: Factory method 'amqpAdmin' threw exception; nested exception is org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:640)
        ... 83 common frames omitted
    Caused by: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect

Есть ли способ макетирования соединения с RabbitMQ?

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Библиотека RabbitMQ-mock может быть полезна, она проверяет ConnectionFactory, чтобы обеспечить поддельное соединение. Рабочий пример интеграционного теста можно найти здесь .

1 голос
/ 02 ноября 2019

вы можете использовать apache qpid https://qpid.apache.org/ как макет в ваших тестах, просто создайте брокер в тестовом контексте

private final Broker broker = new Broker();
public EmbeddedAMQPBroker() throws Exception {
    final String configFileName = "qpid-config.json";
    final String passwordFileName = "passwd.properties";
    // prepare options
    final BrokerOptions brokerOptions = new BrokerOptions();
    brokerOptions.setConfigProperty("qpid.amqp_port", String.valueOf(BROKER_PORT));
    brokerOptions.setConfigProperty("qpid.pass_file", findResourcePath(passwordFileName));
    brokerOptions.setConfigProperty("qpid.work_dir", Files.createTempDir().getAbsolutePath());
    brokerOptions.setInitialConfigurationLocation(findResourcePath(configFileName));
    // start broker
    broker.startup(brokerOptions);
}

он создаст ваш локальный брокер сообщений AMQP, и вы можете использовать его без среды RabbitMQ

или если вы хотите просто макетировать объекты без предоставления функциональности, вы можете использовать Mockito Framework

...