Вот мой весь код. Я думаю, что тест должен пройти, но он терпит неудачу. Я (безуспешно) пытался использовать некоторые из перегрузок до Consumer
.Как создать CreateUsingInMemory() для работы с MassTransit?
using MassTransit;
using NUnit.Framework;
using System.Threading.Tasks;
namespace MassTransitTests
{
public class Message
{
}
public class MessageConsumer : IConsumer<Message>
{
public static int ConsumedCount
{
get;
private set;
}
public Task Consume(ConsumeContext<Message> context)
{
ConsumedCount++;
return Task.FromResult(0);
}
}
[TestFixture]
public class MassTransitTest
{
[Test]
public async Task BasicTestAsync()
{
// Arrange
var control = Bus.Factory.CreateUsingInMemory(configure =>
{
configure.ReceiveEndpoint("myQueue", endpoint =>
{
endpoint.Consumer<MessageConsumer>();
});
});
// Act
using (var handle = control.Start())
{
await control.Publish(new Message());
await control.Publish(new Message());
}
// Assert
Assert.That(MessageConsumer.ConsumedCount, Is.EqualTo(2));
}
}
}
documentation их показывает это, именно то, что я делаю:
var busControl = Bus.Factory.CreateUsingInMemory(cfg =>
{
cfg.ReceiveEndpoint("queue_name", ep =>
{
//configure the endpoint
})
});
Что я делаю неправильно/что мне необходимо изменить в моем Arrange/Act, чтобы получить мой Assert к Работа?
Вы также можете использовать '' 'MassTransit.TestFramework'' 'с помощью NUnit, и используйте' '' 'InMemoryTestFixture'', чтобы настроить ваш тест для вас. Посмотрите на https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit.Tests/MultiTestConsumer_Specs.cs#L29 для примера, который также использует '' '' MultiTestConsumer''' для тестирования потребления сообщений. –