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