使用预定事件测试 MassTransit saga

Testing a MassTransit saga with scheduled events

尝试按照有关如何测试使用 DI 的 Saga 的示例进行操作 (https://masstransit-project.com/usage/testing.html#testing-using-dependency-injection)

 var provider = new ServiceCollection()
    .AddMassTransitInMemoryTestHarness(cfg =>
    {
        cfg.AddSagaStateMachine<TStateMachine, TInstance>()
            .InMemoryRepository();
        cfg.AddSagaStateMachineTestHarness<TStateMachine, TInstance>();
    })
    .BuildServiceProvider(true);

...

但是,我无法在 Saga 上使用预定事件进行测试。我正在按照 https://masstransit-project.com/usage/sagas/automatonymous.html#schedule

中的示例进行操作

我通过在消息总线配置中添加 AddRabbitMqMessageSchedulerUseDelayedExchangeMessageScheduler 使其与 RabbitMQ 一起工作。

在测试中我得到以下异常:

The payload was not found: MassTransit.MessageSchedulerContext

我想这是因为我没有为提供商配置正确的东西。我正在尝试找到正确的扩展方法,但我想可能不支持与 AddMassTransitInMemoryTestHarness?

结合使用

有支持,你只需要配置即可:

TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus += configurator =>
{
    configurator.UseDelayedMessageScheduler();
};

这必须在启动线束之前执行。