Я пытаюсь выполнить Moq для Azure CloudBlockBlob и заставить его вернуть поток, чтобы я мог проверить, правильно ли обрабатывает мой репозиторий BlobStorage вывод.
Но почему-то возвращаемый поток всегда пуст.
Код юнит-теста:
....
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write("sample data");
writer.Flush();
stream.Position = 0;
var blobMock = new Mock<CloudBlockBlob>(new Uri("http://tempuri.org/blob"));
blobMock
.Setup(m => m.ExistsAsync())
.ReturnsAsync(true);
blobMock
.Setup(m => m.DownloadToStreamAsync(It.IsAny<MemoryStream>()))
.Returns(Task.FromResult(stream));
....
код хранилища:
....
var blob = GetContainer(container).GetBlockBlobReference(name);
if (await blob.ExistsAsync())
{
var ms = new MemoryStream();
await blob.DownloadToStreamAsync(ms);
ms.Seek(0, SeekOrigin.Begin);
return ms;
}
....
Таким образом, мой возвращенный поток ms
всегда является пустым потоком, а не объектом stream
, который я использую в своем методе Moq Returns()
.
Как я могу сделать, чтобы этот BLOB-файл возвратил мой поток пробы?