【问题标题】:Testing a MassTransit saga with scheduled events使用预定事件测试 MassTransit 传奇
【发布时间】:2021-05-12 10:01:58
【问题描述】:

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

 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 结合使用?

【问题讨论】:

    标签: masstransit automatonymous


    【解决方案1】:

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

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

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

    【讨论】:

    • 完美!谢谢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多