使用预定事件测试 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
中的示例进行操作
我通过在消息总线配置中添加 AddRabbitMqMessageScheduler
和 UseDelayedExchangeMessageScheduler
使其与 RabbitMQ 一起工作。
在测试中我得到以下异常:
The payload was not found: MassTransit.MessageSchedulerContext
我想这是因为我没有为提供商配置正确的东西。我正在尝试找到正确的扩展方法,但我想可能不支持与 AddMassTransitInMemoryTestHarness
?
结合使用
有支持,你只需要配置即可:
TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus += configurator =>
{
configurator.UseDelayedMessageScheduler();
};
这必须在启动线束之前执行。
尝试按照有关如何测试使用 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
和 UseDelayedExchangeMessageScheduler
使其与 RabbitMQ 一起工作。
在测试中我得到以下异常:
The payload was not found: MassTransit.MessageSchedulerContext
我想这是因为我没有为提供商配置正确的东西。我正在尝试找到正确的扩展方法,但我想可能不支持与 AddMassTransitInMemoryTestHarness
?
有支持,你只需要配置即可:
TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus += configurator =>
{
configurator.UseDelayedMessageScheduler();
};
这必须在启动线束之前执行。