我已经在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),但我无法在测试治具中处理该命令。
我在这里想念什么?