【问题标题】:unit test rabbitMQ c# Moq单元测试 rabbitMQ c# Moq
【发布时间】:2018-12-10 10:38:41
【问题描述】:

我正在尝试使用 Moq nuget 包对我的 RabbitMQ 交换和队列进行单元测试。但无论我如何尝试以及使用多少谷歌,我都无法理解我应该如何模拟 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:“RabbitMQ.Fakes,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”程序集类型“RabbitMQ.Fakes.FakeModel”的“方法“CreateBasicPublishBatch”未实现。”

我也尝试过仅实例化一个标准模拟对象,但我找不到正确的方法来执行此操作并能够使用它。

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

【问题讨论】:

  • 发布您的代码...您尝试过的内容以及卡住的具体部分
  • 当然,我已经删除了我所有的尝试(尝试关注其他内容,却发现我无法使用它)但我尝试再次重新创建我的错误,并且现在更新帖子跨度>
  • 您实际上想测试什么?通常没有很多有效的单元测试用例依赖于消息代理。
  • 单元测试不是我的强项,所以说实话...我不确定我要测试什么。这是一个学校项目的一部分,我们被告知要对我们软件的不同部分进行单元测试。我在想,也许要确保有一个开放的连接,以及其他基础知识。我确实有一个案例,如果我的队列中有指定数量的调用,我需要实例化我们的微服务的一个新实例。

标签: c# unit-testing rabbitmq moq


【解决方案1】:

测试 RabbitMQ 代码的最简单方法是为您的消费者编写独立的单元测试。

也就是说,您的消费者本质上应该只是一个接收消息的函数。因此,您的单元测试应该只创建一个模拟兔子消息,然后使用该消息调用消费者,然后检查消费者是否按照您的期望进行操作。换句话说,消费者应该与 Rabbit 代码解耦。

你不应该真的必须测试兔子连接等,因为那是兔子库的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2012-11-27
    • 1970-01-01
    • 2021-10-15
    相关资源
    最近更新 更多