2017-03-10 36 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插入。