2016-08-23 67 views
0

我無法驗證我發佈事件使用NServiceBus.Testing(NServiceBus,V6試用版)驗證NServiceBus事件屬性(使用接口)

在我的API控制器公佈事件

await _messageSession.Publish<IStrategyCreated>(stgy => 
{ 
    stgy.StrategyId = strategyToAdd.Id; 
    stgy.InvestmentObjective = strategyToAdd.InvestmentObjective; 
    stgy.PrincipalInvestmentStrategy = strategyToAdd.PrincipalInvestmentStrategy; 
    stgy.PortfolioConsultant = strategyToAdd.PortfolioConsultant; 
    stgy.StrategyName = strategyToAdd.Name; 
    stgy.StrategyCode = strategyToAdd.Code; 
}); 

在我的測試我有:

Assert.That(messageSession.PublishedMessages.Length, Is.EqualTo(1), "Messages published"); 
Assert.IsInstanceOf<IStrategyCreated>(messageSession.PublishedMessages[0],"Message published was of type IStrategyCreated"); 

第二行失敗,因爲消息類型是IStrategyCreated_impl 錯誤:

Message published was of type IStrategyCreated 
    Expected: instance of <Strategy.Contracts.Events.IStrategyCreated> 
    But was: <NServiceBus.Testing.PublishedMessage`1[System.Object]> 

完整的測試方法:

public async Task TestCreateStrategy() 
    { 

     var messageSession = new TestableMessageSession(); 
     var dbContent = _container.Resolve<IStrategyDbContext>(); 
     var apiContext = new StrategyController(messageSession, dbContent); 
     var result = 
      await apiContext.Create(new StrategyModel {Code = "NEW"}) as 
       OkNegotiatedContentResult<StrategyModel>; 

     Assert.That(messageSession.PublishedMessages.Length, Is.EqualTo(1), "Messages published"); 
     Assert.IsInstanceOf<IStrategyCreated>(messageSession.PublishedMessages[0],"Message published was of type IStrategyCreated"); 
     var stgyCreated =(IStrategyCreated) messageSession.PublishedMessages[0]; 

     Assert.That(result, Is.Not.Null, "Result Is Null"); 
     Assert.That(stgyCreated.StrategyCode, Is.EqualTo("NEW")); 
     Assert.That(result?.Content.Code, Is.EqualTo("NEW"), "Returning Strategy"); 
     Assert.That(dbContent.Strategies.Count(), Is.EqualTo(1), "Exactly 1 item was added to strategy list"); 


    } 

回答

2

代替messageSession.PublishedMessages[0]使用messageSession.PublishedMessages[0].Message,宜工則。