验证 NServiceBus 事件属性(使用接口)

Validating NServiceBus Event Properties (Using Interfaces)

我无法验证使用 NServiceBus.Testing 发布的事件(NServiceBus,V6 beta)

在我的 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");


    }

而不是 messageSession.PublishedMessages[0] 使用 messageSession.PublishedMessages[0].Message,应该可以。