Nsb:调用 ReplyToOriginator 的单元测试 Saga 处理程序
Nsb: Unit Testing Saga Handlers which call ReplyToOriginator
我正在为我所有的 Saga 处理程序编写简单的单元测试,基本上只是确保消息 caught/handled。
但是,其中一个 Saga 处理程序调用了 ReplyToOriginator,现在它抛出异常,因为测试上下文未被识别为有效的发起者。
更具体地说,我的相关代码如下所示:
[TestInitialize]
public void Initialize()
{
_context = new TestableMessageHandlerContext();
_process = new ActionProcess() { Data = new ActionProcess.ActionSagaData() };
}
[TestMethod]
public async Task ActionProcess_ActionSentHandler_ShouldHandleMessage()
{
// Arrange
var cmd = new ActionSent();
// Act
await _process.Handle(cmd, _context);
// Assert
}
public async Task Handle(ActionSent message, IMessageHandlerContext context)
{
var actionProcessCompletedReply = new ActionProcessCompleted()
await ReplyToOriginator(context, actionProcessCompletedReply);
}
并且测试失败并传递了以下异常:
System.Exception: Entity.Originator cannot be null. Perhaps the sender is a SendOnly endpoint.
任何人都可以就如何解决这个问题提供一些建议吗?我是否以不合适的方式测试 Saga Handlers?
Saga.ReplyToOriginator
期望从传入的原始消息中设置发件人。由于这是一个测试,发件人不会自动设置,您必须通过分配 _process.Data.Originator
来手动设置它一些任意值。
我正在为我所有的 Saga 处理程序编写简单的单元测试,基本上只是确保消息 caught/handled。
但是,其中一个 Saga 处理程序调用了 ReplyToOriginator,现在它抛出异常,因为测试上下文未被识别为有效的发起者。
更具体地说,我的相关代码如下所示:
[TestInitialize]
public void Initialize()
{
_context = new TestableMessageHandlerContext();
_process = new ActionProcess() { Data = new ActionProcess.ActionSagaData() };
}
[TestMethod]
public async Task ActionProcess_ActionSentHandler_ShouldHandleMessage()
{
// Arrange
var cmd = new ActionSent();
// Act
await _process.Handle(cmd, _context);
// Assert
}
public async Task Handle(ActionSent message, IMessageHandlerContext context)
{
var actionProcessCompletedReply = new ActionProcessCompleted()
await ReplyToOriginator(context, actionProcessCompletedReply);
}
并且测试失败并传递了以下异常:
System.Exception: Entity.Originator cannot be null. Perhaps the sender is a SendOnly endpoint.
任何人都可以就如何解决这个问题提供一些建议吗?我是否以不合适的方式测试 Saga Handlers?
Saga.ReplyToOriginator
期望从传入的原始消息中设置发件人。由于这是一个测试,发件人不会自动设置,您必须通过分配 _process.Data.Originator
来手动设置它一些任意值。