我正在尝试对nservice传奇进行单元测试,并编写了一个测试。
在该测试中,有一个assert语句如下
Assert.IsType<MyCommand>(_messageContext.SentMessages[2].Message);
您可以看到我必须使用索引2才能达到目的。在我的传奇中,我发送了许多消息,因此使用索引很难对其进行测试。我试图用Google搜索,但找不到更好的解决方案。
像_messageContext.SentMessages("MyCommand").Message
一样吗?
如果您不关心消息发送的确切顺序,则可以使用Linq OfType
方法as documented here查找相关类型的消息:
var myCommandMessage = _messageContext.SentMessages.OfType<MyCommand>().Single();
这听起来似乎比NServiceBus特定问题更优雅地编写断言。一种更容易写断言的方法是使用诸如FluentAssertions之类的库,该库具有非常可读的语法来声明例如。在特定类型的集合中仅存在一条消息,并检查消息内容是否正确。