Имитируйте GetRetryAttempt() Масстрансита с помощью NSubstitute

#c# #xunit #masstransit #nsubstitute

Вопрос:

Я пытаюсь издеваться над методом GetRetryAttempt() Masstransit, чтобы вернуть некоторые значения с помощью NSubstitute, но, похоже, это не работает. Не получаю никаких ошибок, но GetRetryAttempt() всегда возвращает 0 вместо 2.

Тест

 var context = Substitute.For<ConsumeContext<FakeCommand>>();
var consumeRetryContext = Substitute.For<ConsumeRetryContext>();
consumeRetryContext.RetryAttempt.Returns(2);
context.TryGetPayload(out consumeRetryContext).Returns(true);
context.GetRetryAttempt().Returns(consumeRetryContext.RetryAttempt);
 

Код приложения

 public async Task Consume(ConsumeContext<T> context)
{
    ......
    var retryAttempt = context.GetRetryAttempt();
}
 

Комментарии:

1. Не издевайтесь, используйте InMemoryTestHarness из Testing пространства имен.

2. Спасибо @ChrisPatterson. Я имею в виду это masstransit-project.com/usage/testing.html#test-setup . Можете ли вы уточнить, как я могу указать свой код приложения, что повторная попытка (GetRetryAttempt() должна возвращать x) — это номер x из тестового жгута?