【问题标题】:Testing message headers in nServicebus在 nServicebus 中测试消息头
【发布时间】:2013-01-30 14:00:51
【问题描述】:
我正在努力让消息头从我在 nServiceBus (v3.3.0.0) 中的单元测试中工作。使用 SetIncomingHeader(...) 在测试中设置标头,但是当我在消息处理程序中调用 GetHeader(...) 时,我得到了字符串:
没有定义标题获取标题操作,请指定一个使用
ExtensionMethods.GetHeaderAction = ...
标头在测试框架之外工作正常。
FullDuplex 示例应用程序基本上显示了我正在使用的代码并且遇到了同样的问题。有谁知道我如何设置 GetHeaderAction 方法?
提前致谢。
【问题讨论】:
标签:
unit-testing
nservicebus
【解决方案2】:
正如约翰所说,这在
中已修复
此外,请确保您使用的是此处记录的 NServiceBus.Testing 框架:
例子:
[TestFixture]
public class Tests
{
[Test]
public void Run()
{
Test.Initialize();
Test.Handler<MyMessageHandler>()
.SetIncomingHeader("Test", "abc")
.ExpectReply<ResponseMessage>(m => Test.Bus.GetMessageHeader(m, "MyHeaderKey") == "myHeaderValue")
.OnMessage<RequestMessage>(m => m.String = "hello");
}
}
class MyMessageHandler : IHandleMessages<RequestMessage>
{
public IBus Bus { get; set; }
public void Handle(RequestMessage message)
{
ResponseMessage responseMessage = new ResponseMessage();
Bus.SetMessageHeader(responseMessage, "MyHeaderKey", "myHeaderValue");
Bus.Reply(responseMessage);
}
}
请注意,这是针对 NServiceBus v4/v5 的。对于其他版本,请访问文档。