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");
}