我有一个非常奇怪的问题,应该很容易做!
我有一个服务 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?
这些使用相同的注入服务,在外部访问时已验证为正确
保罗