将 MessageData 与 InMemoryTestHarness 结合使用
Use MessageData with InMemoryTestHarness
我尝试使用 MassTransit 的内存测试工具设置集成测试。由于我的 MyCommandConsumer 通过 MessageData 抽象接收大二进制数据,我需要配置存储库:
var provider = new ServiceCollection()
.AddMassTransitInMemoryTestHarness(cfg =>
{
// this does not work:
cfg.UsingInMemory((context, conf) => conf.UseMessageData(repository));
cfg.AddConsumer<MyCommandConsumer>();
cfg.AddConsumerTestHarness<MyCommandConsumer>();
})
.BuildServiceProvider(true);
不幸的是,上面的代码不起作用并产生异常:
MassTransit.ConfigurationException: 'SetBusFactory' can be called only once.
如何配置 InMemoryTestHarness 以使用 MessageData 提供程序?
您需要解析测试工具,然后添加配置事件。这应该放在调用 Start
线束之前:
TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus += configurator =>
{
configurator.UseMessageData(repository);
};
我尝试使用 MassTransit 的内存测试工具设置集成测试。由于我的 MyCommandConsumer 通过 MessageData 抽象接收大二进制数据,我需要配置存储库:
var provider = new ServiceCollection()
.AddMassTransitInMemoryTestHarness(cfg =>
{
// this does not work:
cfg.UsingInMemory((context, conf) => conf.UseMessageData(repository));
cfg.AddConsumer<MyCommandConsumer>();
cfg.AddConsumerTestHarness<MyCommandConsumer>();
})
.BuildServiceProvider(true);
不幸的是,上面的代码不起作用并产生异常:
MassTransit.ConfigurationException: 'SetBusFactory' can be called only once.
如何配置 InMemoryTestHarness 以使用 MessageData 提供程序?
您需要解析测试工具,然后添加配置事件。这应该放在调用 Start
线束之前:
TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus += configurator =>
{
configurator.UseMessageData(repository);
};