Модульный тест rabbitMQ C# Moq

Я пытаюсь провести модульное тестирование своих обменов и очередей RabbitMQ, используя пакет Moq nuget. но как бы я ни старался и как часто использую Google, я не могу понять, как я должен издеваться над объектами rabbitMQ. какие-нибудь указатели на кого-то новичка в модульном тестировании, мокапах ???

Я пробовал использовать пакет Nuget RabbitMQ.Fakes вот так:

[TestMethod]
public void testconnectionnotnull()
{
    FakeConnectionFactory factory = new FakeConnectionFactory();
    IConnection connection = factory.CreateConnection();

    NUnit.Framework.Assert.That(connection.IsOpen);
    NUnit.Framework.Assert.That(factory.Connection, 
    NUnit.Framework.Assert.AreSame(connection));
}

но когда я создаю IConnection, я получаю следующую ошибку:

System.TypeLoadException: 'Method 'CreateBasicPublishBatch' of type 'RabbitMQ.Fakes.FakeModel' from assembly 'RabbitMQ.Fakes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not implemented.'

Я также попытался создать экземпляр стандартного фиктивного объекта, но не могу найти правильный способ сделать это и уметь его использовать.

[TestMethod]
public void TestFactoryNotNull()
{
    Mock<Rabbit_Recieve> mock = new Mock<Rabbit_Recieve>(); 
}

опубликуйте свой код ... то, что вы пробовали, и конкретную часть, в которой вы застряли

Rahul 10.12.2018 11:39

конечно, я удалил все свои попытки (пытался следовать чему-то еще, только чтобы обнаружить, что я не могу это использовать), но я попытался снова воссоздать свои ошибки, и сообщение теперь обновлено

Tanya Dørr Holst 10.12.2018 11:56

Что вы на самом деле пытаетесь проверить? Обычно существует не так много допустимых случаев модульного тестирования, которые зависят от брокера сообщений.

theMayer 10.12.2018 21:41

Модульное тестирование - не моя сильная сторона, так что, честно говоря ... я не уверен, что я пытаюсь проверить. это часть школьного проекта, в котором нам сказали не согласовывать модульные тесты наших различных частей программного обеспечения. Я подумал, может быть, удостовериться, что есть открытое соединение, и другие основы. У меня есть случай, когда, если у меня есть указанное количество вызовов в моей очереди, мне нужно создать новый экземпляр нашего микросервиса.

Tanya Dørr Holst 11.12.2018 11:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
2 185
1

Ответы 1

Самый простой способ протестировать код RabbitMQ - написать изолированные модульные тесты для вашего потребитель.

То есть ваш потребитель, по сути, должен быть просто функцией, которая получает сообщение. Таким образом, ваши модульные тесты должны просто создать фиктивное сообщение кролика, а затем вызвать потребителя с этим сообщением, а затем вы убедитесь, что потребитель делает то, что вы от него ожидаете. Другими словами, потребитель должен быть отделен от кода Rabbit.

На самом деле вам не нужно тестировать соединение с кроликом и т. д., Потому что это часть библиотеки кролика.

Другие вопросы по теме