NSubstitute ReceivedCallsException ошибка при выполнении вызовов в последовательности
Когда я запускаю тесты ниже в следующей последовательности ((например, Test1, а затем Test2), он выдает упомянутую ошибку. Но он работает нормально, если он работает в противоположной последовательности. (Т.е. Test2, а затем Test1)
[Факт]
public async Task Test1()
{
var body = GenerateStreamFromString();
var rawMessage = new BrokeredMessage(body);
ProductContractIngestFunc.GetProductContractDataHandler = log => Task.FromResult(_dataHandler);
await ProductContractIngestFunc.Ingest(rawMessage, _logger);
await _feedbackService.DidNotReceiveWithAnyArgs().ReportIssueAsync(
Arg.Any<BrokeredMessage>(),
Arg.Any<DataSyncValidationException>());
}
[Fact]
public async Task Test2()
{
var body = GenerateStreamFromString();
var rawMessage = new BrokeredMessage(body);
var mockFeatureFlagService = Substitute.For<IFeatureFlagService>();
var featureFlag = new FeatureFlag { Enabled = false };
mockFeatureFlagService.GetFeatureFlagAsync(ApplicationConstant.SyncDataType.ProductContract)
.Returns(Task.FromResult(featureFlag));
ServiceInjector.GetFeedbackService = log => _feedbackService;
ServiceInjector.GetFeatureFlagService = log => mockFeatureFlagService;
await ProductContractIngestFunc.Ingest(rawMessage, _logger);
await _feedbackService.ReceivedWithAnyArgs().ReportIssueAsync(
Arg.Any<BrokeredMessage>(),
Arg.Any<FeatureFlagException>());
}
Ниже ошибка происходит в _feedbackService.ReceivedWithAnyArgs()
Ошибка:
at NSubstitute.Core.ReceivedCallsExceptionThrower.Throw(ICallSpecification callSpecification, IEnumerable`1 matchingCalls, IEnumerable`1 nonMatchingCalls, Quantity requiredQuantity)
at NSubstitute.Routing.Handlers.CheckReceivedCallsHandler.Handle(ICall call)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at NSubstitute.Routing.Route.Handle(ICall call)
at NSubstitute.Proxies.CastleDynamicProxy.CastleForwardingInterceptor.Intercept(IInvocation invocation)
at Castle.DynamicProxy.AbstractInvocation.Proceed()
Первоначально я думал, что это из-за совместного использования одного и того же объекта, а затем попытка сброса фиктивных объектов в каждом тесте все равно без разницы.