0

尝试按照有关如何测试使用 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上的示例

AddRabbitMqMessageScheduler通过在我的消息总线配置中添加和,我已经让它与 RabbitMQ 一起使用UseDelayedExchangeMessageScheduler

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

The payload was not found: MassTransit.MessageSchedulerContext

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

4

1 回答 1

2

有支持,你只需要配置它:

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

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

于 2021-05-12T12:28:07.420 回答