2017-03-10 50 views
0

背景如何获得使用NServiceBus验收测试从佐贺处理反馈

我写了一个测试,确保了应该开始我的传奇指挥高效地创建传奇,并且它的处理程序代码可以执行:

[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; } 
} 

所以

如果我有像这样在我的传奇定义的处理程序:

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

我怎样才能确保IsRequested财产,在 Context定义,是传奇中设置为true的呢?

回答

0

我发现一个溶液,在测试增加一个额外的消息处理程序,像这样:

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插入。

相关问题