#asp.net-core #.net-core #masstransit
Вопрос:
Я пытаюсь протестировать потребителя, настроенного с помощью фильтра. Я хотел бы знать, как провести для них модульный тест.
Я уже использую память для своих тестов.
Я также хотел бы знать, можно ли/как можно выполнять тесты, используя ту же конфигурацию, которую использует приложение, и не создавать новую конфигурацию, используя InMemoryTestHarness.
Мой Массив настроить:
cfg.ReceiveEndpoint("queue", ep =>
{
ep.UseConsumeFilter(typeof(MyFilterConsumer<>), provider);
ep.ConfigureConsumer<MyConsumer>(provider);
});
Настройка моего модульного теста:
public class ConsumerUnitTests : IDisposable
{
private readonly ServiceProvider _provider;
private readonly InMemoryTestHarness _harness;
public ConsumerUnitTests()
{
_provider = new ServiceCollection()
.AddMassTransitInMemoryTestHarness(cfg =>
{
cfg.AddConsumer<AssetEventUpdatedConsumer>();
cfg.AddConsumerTestHarness<AssetEventUpdatedConsumer>();
})
.BuildServiceProvider(true);
_harness = _provider.GetRequiredService<InMemoryTestHarness>();
_ = _harness.Start();
}
с помощью этих настроек я могу нормально тестировать потребителей. Я хотел бы знать, как протестировать фильтр (как указано в конфигурации MassTransit)
Комментарии:
1. Можете ли вы более подробно объяснить, как протестировать клиента, настроенного с помощью фильтра? Запросить базу данных? Об использовании модульного теста в asp.net ядро, вы можете обратиться к следующему учебному пособию: Логика контроллера модульного тестирования в ASP.NET Ядро и Модульное Тестирование С Помощью xUnit И Moq В ASP.NET Ядро .
2. Я думаю, что я неправильно все объяснил. Я знаю, как проводить модульные тесты. Что мне нужно знать, так это как протестировать потребителя (MassTransit), у которого есть фильтр сообщений. Я отредактировал вопрос с помощью примера
Ответ №1:
_harness.OnConfigureInMemoryBus = (cfg) =>
{
cfg.UseConsumeFilter(typeof(YourFilter<>), _provider.GetService<IConfigurationServiceProvider>());
};
Комментарии:
1. Добро пожаловать в Stack Overflow, и спасибо вам за ответ. Не могли бы вы, пожалуйста, отредактировать свой ответ, чтобы включить объяснение вашего кода? Это поможет будущим читателям лучше понять, что происходит, и особенно тем членам сообщества, которые новички в языке и изо всех сил пытаются понять концепции.