最小起订量无法注入服务但在外部工作

问题描述 投票:0回答:0

我有一个非常奇怪的问题,应该很容易做!

我有一个服务 AzureBlobClientStorageProvider 正在使用简单的接口 mock 进行模拟

_mockAzureBlobClientStorageProvider = new Mock<IAzureBlobClientStorageProvider>();

var source = @$"AwaitingProcessing";
var destination = @$"Processing";

_mockAzureBlobClientStorageProvider
            .Setup(x => x.BlobExistsAsync(It.Is<string>(y => y == destination))).ReturnsAsync(false);
_mockAzureBlobClientStorageProvider
            .Setup(x => x.BlobExistsAsync(It.Is<string>(y => y == source))).ReturnsAsync(true);

var sourceMockedResult = await _mockAzureBlobClientStorageProvider.Object.BlobExistsAsync(source);
var destinationMockedResult = await _mockAzureBlobClientStorageProvider.Object.BlobExistsAsync(destination);

//Setup service that will do the work - CallBase makes no difference
var logger = LoggerForType<BarclaysExternalMessageService>();
_mockService = new Mock<BarclaysExternalMessageService>(TenantService(), 
_mockAzureBlobClientStorageProvider.Object, logger)
{
    CallBase = true
};

_service = mockService.Object;

var serviceSourceResult = await _service.BlobExistsAsync(source);
var serviceDestinationResult = await _service.BlobExistsAsync(destination);

var providerThroughServiceSource = await _service.AzureBlobClientStorageProvider.BlobExistsAsync(source);
var providerThroughServiceDestination = await _service.AzureBlobClientStorageProvider.BlobExistsAsync(destination);

var validForProcessing = await _service.ValidForProcessingAsync(source);

ValidForProcessingAsync 如下所示

public async Task<bool> ValidForProcessingAsync(string blobLocation)
{
    var isAwaitingProcessing = await AzureBlobClientStorageProvider.BlobExistsAsync(blobLocation);

    var processingBlobLocation = blobLocation.Replace(
            ExternalMessageStatus.AwaitingProcessing.GetDescription(),
            ExternalMessageStatus.Processing.GetDescription());
        
    var isProcessing = await AzureBlobClientStorageProvider.BlobExistsAsync(processingBlobLocation) == false;

    var isValidForProcessing = isAwaitingProcessing && isProcessing == false;
    return isValidForProcessing;
}

ValidForProcessingAsync 使用上面的提供程序设置

为什么这个方法对 isProcessing 和 isAwaitingProcessing 都返回 true?

这些使用相同的注入服务,在外部访问时已验证为正确

保罗

c# moq
© www.soinside.com 2019 - 2024. All rights reserved.