使用Outbox和NHibernateStorageContext时的NServiceBus单元测试

时间:2016-05-19 17:52:16

标签: c# unit-testing moq nservicebus

我正在尝试为我的NServiceBus(版本5)消息处理程序编写单元测试。我正在使用RabbitMQ和发件箱功能。

发件箱功能为您提供了" DTC"就像功能一样,但这是通过将NHibernateStorageContext注入到处理程序中来实现的。您所做的任何数据库更改都必须使用该对象的数据库连接完成。 (即所有数据库写入必须通过相同的数据库连接/事务进行)。

我遇到的问题是NHibernateStorageContext没有公共默认构造函数。另外,它没有实现任何接口!我无法模仿它并使用MOQ等标准框架传递它。

此时,我能想到的唯一解决方案就是使用MS Fakes,生成类的假并将其传递下来。

我错过了什么吗?有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我只是想知道单元测试这样的处理程序是否能给你足够的覆盖率?消息处理程序比简单的单元测试要多得多:

  • 您是否在标题中获得了正确的信息?
  • 如何测试交互(处理程序中的多条消息)?
  • 涉及超时的更复杂的传奇逻辑怎么样?

由于更多原因,有NServiceBus.Testing个包,强烈建议您使用它来测试您的邮件系统。文档页面上有一些示例here