简体   繁体   English

使用中介测试 MassTransit 消费者

[英]Testing MassTransit consumer with mediator

I have consumer CarCreatedConsumer which I want to unit test我有消费者 CarCreatedConsumer 我想对其进行单元测试

public class CarCreatedConsumer: IConsumer<CarCreatedEvent>
{
   private readonly IMediator _mediator;
   public CarCreatedConsumer(IMediator mediator)
   {
        _mediator = mediator;
   }
   public async Task Consume(ConsumeContext<CarCreatedEvent> context)
   {
      ....
   }
}

Using MassTransit.Testing I'm trying to write test for event consumer使用 MassTransit.Testing 我正在尝试为事件消费者编写测试

[TestFixture]
public class MyTests
{
   private ServiceProvider _provider;
   private InMemoryTestHarness _harness;

   [SetUp]
   public void SetUp()
   {
     _provider = new ServiceCollection()
       .AddMassTransitInMemoryTestHarness(cfg =>
       {
          cfg.AddConsumer<CarCreatedConsumer>();
       }).AddMediator()
      .BuildServiceProvider(true);
         
      _harness = _provider.GetRequiredService<InMemoryTestHarness>();
   }
   
  [Test]
  public async Task MessageShouldBeConsumed()
  {
     await _harness.Start();
    try
    {
     await _harness.InputQueueSendEndpoint.Send<CarCreatedEvent>(new 
     {
        CarId = Guid.NewGuid.ToString(),
        CarOwnerName = "John Stuart"
        ...
     }
        // Always false
        Assert.True(_harness.Consumed.Select<CarCreatedEvent>().Any());
    }
    finally
    {
       await _harness.Stop();
    }
  }
}

I'm expect this to return true but it fails (returns false).我希望这会返回 true,但它会失败(返回 false)。 Obviously I'm doing something wrong, any ideas?显然我做错了什么,有什么想法吗?

Your test harness usage is suspect, and is also using an obsolete version of the configuration.您的测试工具使用情况令人怀疑,并且还使用了过时的配置版本。 I'd suggest reading the documentation on the current test harness and how to test your consumer.我建议阅读有关当前测试工具以及如何测试您的消费者的文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM