我正在使用MassTransit在两个微服务之间交换消息,并且我有一个消费者在收到命令消息时发布事件。
在添加单元测试以覆盖此消息交换时,我注意到当没有发布事件时,测试需要大约30秒才能完成,我认为这是默认超时。这是重现问题的xUnit单元测试。
using System;
using Xunit;
using MassTransit;
using MassTransit.Testing;
using System.Linq;
using SomeProject.MassTransitInterface;
namespace SomeProject.MassTransitInterface.Tests
{
public class CommandTests
{
[Fact]
public void Test1 ()
{
var harness = new InMemoryTestHarness();
var consumer = harness.Consumer<SomeCommandConsumer>();
harness.Start().Wait();
var command = new SomeCommand();
harness.InputQueueSendEndpoint.Send(command);
Assert.True( harness.Sent.Select<SomeCommand>().Any() );
harness.Stop().Wait();
}
}
}
有谁知道是否有可能调整超时,以便测试可能在几秒后失败?
您可以在线束上设置TestTimeout
属性,该属性由所有创建的测试组件使用。
/// <summary>
/// Timeout for the test, used for any delay timers
/// </summary>
public TimeSpan TestTimeout { get; set; }
您应该尽早设置它,就像在测试构造函数中一样,这样任何令牌或计时器都会使用该值。