Nsb:调用ReplyToOriginator的单元测试传奇处理程序

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

我正在为我的所有Saga处理程序编写简单的单元测试,基本上只是确保消息被捕获/处理。

但是,其中一个Saga Handler调用了ReplyToOriginator,现在它正在抛出异常,因为测试上下文不被识别为有效的Originator。

更具体地说,我的相关代码如下所示:

    [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不能为null。也许发件人是SendOnly端点。

谁能提供一些关于如何解决这个问题的建议?我是否可能以不合适的方式测试Saga Handlers?

nservicebus
1个回答
1
投票

Saga.ReplyToOriginator期望从原始消息中设置发起者。由于这是一个测试,发起者不会自动设置,您必须通过为_process.Data.Originator指定一些任意值来手动设置它。

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