Я пытаюсь провести модульное тестирование своих обменов и очередей 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>();
}
конечно, я удалил все свои попытки (пытался следовать чему-то еще, только чтобы обнаружить, что я не могу это использовать), но я попытался снова воссоздать свои ошибки, и сообщение теперь обновлено
Что вы на самом деле пытаетесь проверить? Обычно существует не так много допустимых случаев модульного тестирования, которые зависят от брокера сообщений.
Модульное тестирование - не моя сильная сторона, так что, честно говоря ... я не уверен, что я пытаюсь проверить. это часть школьного проекта, в котором нам сказали не согласовывать модульные тесты наших различных частей программного обеспечения. Я подумал, может быть, удостовериться, что есть открытое соединение, и другие основы. У меня есть случай, когда, если у меня есть указанное количество вызовов в моей очереди, мне нужно создать новый экземпляр нашего микросервиса.





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