测试nservicebus传奇的更好方法

问题描述 投票:0回答:1

我正在尝试对nservice传奇进行单元测试,并编写了一个测试。

在该测试中,有一个assert语句如下

Assert.IsType<MyCommand>(_messageContext.SentMessages[2].Message);

您可以看到我必须使用索引2才能达到目的。在我的传奇中,我发送了许多消息,因此使用索引很难对其进行测试。我试图用Google搜索,但找不到更好的解决方案。

_messageContext.SentMessages("MyCommand").Message一样吗?

unit-testing nservicebus
1个回答
0
投票

如果您不关心消息发送的确切顺序,则可以使用Linq OfType方法as documented here查找相关类型的消息:

var myCommandMessage = _messageContext.SentMessages.OfType<MyCommand>().Single();

这听起来似乎比NServiceBus特定问题更优雅地编写断言。一种更容易写断言的方法是使用诸如FluentAssertions之类的库,该库具有非常可读的语法来声明例如。在特定类型的集合中仅存在一条消息,并检查消息内容是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.