小编rob*_*obs的帖子

MassTransit 4单元测试使用者超时

我已经在MT 3.5.7中成功将这种测试模式与sagas一起使用,但是现在在MT 4.0中并测试了使用者,我正在使用InMemoryTestHarness来测试来自使用者的消息的发布而超时。

通过测试调试的单步执行,我可以看到使用者被正确调用,并且它发布了消息。消费者除了接收消息并发布新消息外什么也不做。

但是等待_harness.SubscribeHandler发布消息的超时。

为简洁起见,以下代码删除了我的容器注册和设置的测试数据。

[TestFixture]
public class ConsumerTest
{
    InMemoryTestHarness _harness;
    ConsumerTestHarness<TCommandConsumer> _consumer
    ConsumeContext<ConsumerCompleted> _resultHandler;

    [OneTimeSetup]
    public async Task TaskSetup()
    {
      IContainer _container;
      //...container registrations and test data setup

      _harness = new InMemoryTestHarnes();
      _consumer = _harness.Consumer<TCommandConsumer>( () => _container.Resolve<TCommandConsumer>() );
      await _harness.Start();
      await _harness.InputQueueSendEndpoint.Send(new TCommand { Source = testdataSource, Topic = testdataTopic });
     _resultHandler = await _harness.SubscribeHandler<ConsumerCompleted>(); //Timeout here
    }
Run Code Online (Sandbox Code Playgroud)

命令使用者(TCommandConsumer)成功接收了发送的命令,InputQueueSendEndpoint.Send并发布了响应(ConsumerCompleted),但我无法在测试治具中处理该命令。

我在这里想念什么?

c# nunit unit-testing masstransit

2
推荐指数
1
解决办法
463
查看次数

标签 统计

c# ×1

masstransit ×1

nunit ×1

unit-testing ×1