#masstransit
Вопрос:
Я пытаюсь настроить интеграционный тест, используя тестовый жгут в памяти MassTransit. Поскольку мой пользователь Mycommand получает большие двоичные данные через абстракцию 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 для использования поставщика данных сообщений?
Ответ №1:
Вам необходимо разрешить тестовый жгут, а затем добавить событие конфигурации. Это должно быть сделано до вызова Start
жгута проводов:
TestHarness = provider.GetRequiredService<InMemoryTestHarness>();
TestHarness.OnConfigureInMemoryBus = configurator =>
{
configurator.UseMessageData(repository);
};