2016-08-23 2 views
0

나는 이벤트를 게시 내 API 컨트롤러에서 NServiceBus.Testing (NServiceBus, V6 베타)검증 NServiceBus 이벤트 속성 (사용 인터페이스)

를 사용하여 게시 이벤트를 확인할 수 없습니다입니다

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].MessagemessageSession.PublishedMessages[0]의 다음 작동합니다.