测试 nservicebus saga 的更好方法
Better way to test nservicebus saga
我正在尝试对 nservice saga 进行单元测试并编写了一个测试。
在该测试中有一个断言语句如下
Assert.IsType<MyCommand>(_messageContext.SentMessages[2].Message);
你可以看到我必须使用索引 2 才能做到这一点。在我的故事中,我发送了很多消息,因此使用 Index 进行测试有点困难。我尝试 google 但找不到更好的解决方案。
有没有像_messageContext.SentMessages("MyCommand").Message
这样的方法?
如果您不关心消息发送的确切顺序,您可以使用 Linq OfType
方法 as documented here 来查找相关类型的消息:
var myCommandMessage = _messageContext.SentMessages.OfType<MyCommand>().Single();
这听起来更像是优雅地编写断言的问题,而不是特定于 NServiceBus 的问题。一种更容易编写断言的方法是使用诸如 FluentAssertions 之类的库,它具有非常易读的语法来断言,例如特定类型的集合中恰好有一条消息,检查消息内容是否正确
我正在尝试对 nservice saga 进行单元测试并编写了一个测试。
在该测试中有一个断言语句如下
Assert.IsType<MyCommand>(_messageContext.SentMessages[2].Message);
你可以看到我必须使用索引 2 才能做到这一点。在我的故事中,我发送了很多消息,因此使用 Index 进行测试有点困难。我尝试 google 但找不到更好的解决方案。
有没有像_messageContext.SentMessages("MyCommand").Message
这样的方法?
如果您不关心消息发送的确切顺序,您可以使用 Linq OfType
方法 as documented here 来查找相关类型的消息:
var myCommandMessage = _messageContext.SentMessages.OfType<MyCommand>().Single();
这听起来更像是优雅地编写断言的问题,而不是特定于 NServiceBus 的问题。一种更容易编写断言的方法是使用诸如 FluentAssertions 之类的库,它具有非常易读的语法来断言,例如特定类型的集合中恰好有一条消息,检查消息内容是否正确