【发布时间】:2021-10-11 20:01:54
【问题描述】:
我正在尝试测试配置了过滤器的消费者。我想知道如何为他们进行单元测试。
我已经使用 InMemoryTestHarness 进行测试。
我还想知道是否/如何使用应用程序使用的相同配置进行测试,而不是使用 InMemoryTestHarness 进行新配置。
我的 Masstransit 配置:
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 配置中指定)
【问题讨论】:
-
您能否详细解释一下如何测试配置了过滤器的客户?查询数据库?关于在asp.net core中使用单元测试,可以参考以下教程:Unit test controller logic in ASP.NET Core和Unit Testing With xUnit And Moq In ASP.NET Core。
-
我想我解释得不对。我知道如何进行单元测试。我需要知道的是如何测试具有消息过滤器的消费者(MassTransit)。我用一个例子编辑了这个问题
标签: asp.net-core .net-core masstransit