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()

Первоначально я думал, что это из-за совместного использования одного и того же объекта, а затем попытка сброса фиктивных объектов в каждом тесте все равно без разницы.

0 ответов

Другие вопросы по тегам