【问题标题】:How to get feedback from saga handler using NServiceBus Acceptance Testing如何使用 NServiceBus 验收测试从 saga 处理程序获取反馈
【发布时间】:2017-03-10 15:20:00
【问题描述】:

背景

我编写了一个测试,以确保应该启动我的 saga 的命令有效地创建了 saga,并且它的处理程序代码可以被执行:

[Fact]
public async Task Can_Start_Saga_And_Execute_Handler()
{
    var result = await Scenario
        .Define<Context>()
        .WithEndpoint<Endpoint>(b => b.When(session =>
            {
                return session.SendLocal(new SagaStarter());
            })
        )
        .Done(context => context.IsRequested)
        .Run(Testing.MaxRunTime);

    result.IsRequested.ShouldBeTrue();
}

上下文在哪里:

class Context : ScenarioContext
{
    public bool IsRequested { get; set; }
}

所以

如果我的 saga 定义中有这样的处理程序:

public async Task Handle(SagaStarter message, IMessageHandlerContext context)
{
    await StuffToDo();
}

我怎样才能确保IsRequested 属性,定义在 Context,在传奇中设置为 true?

【问题讨论】:

    标签: c# .net nservicebus xunit acceptance-testing


    【解决方案1】:

    我找到了一个解决方案,在测试中添加了一个额外的消息处理程序,如下所示:

    public class TestHandler : IHandleMessages<SagaStarter>
    {
        private Context _testContext;
    
        public TestHandler(Context testContext)
        {
            _testContext = testContext;
        }
    
        public Task Handle(SagaStarter message, IMessageHandlerContext context)
        {
            _testContext.IsRequested= true;
            return Task.CompletedTask;
        }
    }
    

    Context参数通过Dependency Injection插入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多