Мне нужно написать модульный тест для следующего метода:
private async Task<bool> CreateFileAsync(string fileContent, string containerName, string fileName, string connectionString)
{
CloudStorageAccount cloudStorageAccount = await GetCloudStorageAccount(connectionString);
CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer containerRef = blobClient.GetContainerReference(containerName);
CloudBlockBlob blobRef = containerRef.GetBlockBlobReference(fileName);
await blobRef.UploadTextAsync(fileContent);
return true;
}
Мне нужно написать модульный тест xUnit, который выдаст HttpException
при вызове blobRef.UploadTextAsync(fileContent)
.
Microsoft.WindowsAzure.Storage.CloudBlockBlob : Microsoft.WindowsAzure.Storage.Blob.ICloudBlob
Но CloudStorageAccount
не реализует интерфейс, поэтому не похоже, что я могу его высмеять.
Вот некоторый пример кода модульного тестирования, основанный на том, что я понимаю о насмешках и собранных вместе для этого конкретного сценария:
var cloudBlockBlobMock = new Mock<ICloudBlob>();
cloudBlockBlobMock
.Setup(cbb => cbb.UploadTextAsync("test"))
.Throws<HttpException>();
var fileUploader = new FileUploader(cloudBlockBlobMock);
fileUploader.CreateFileAsync("test");
Является ли CreateFileAsync()
модульно-тестируемым?
Возможно ли / допустимо издеваться над дочерним объектом без насмешки над его родительским объектом?