需要有关模拟Azure CloudBlob的帮助吗
这是我需要测试的函数需要有关模拟Azure CloudBlob的帮助吗,azure,unit-testing,azure-storage-blobs,azure-blob-storage,Azure,Unit Testing,Azure Storage Blobs,Azure Blob Storage,这是我需要测试的函数 [FunctionName("GetImage")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "GetImage/{filename}")] HttpRequest req,
[FunctionName("GetImage")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "GetImage/{filename}")] HttpRequest req,
string filename,
[Blob("%blobContainerName%/{filename}", FileAccess.Read, Connection = "StorageConnectionAppSetting")] CloudBlobContainer blob,
ILogger log)
{
try
{
CloudBlob img = blob.GetBlobReference(filename);
Stream test = await img.OpenReadAsync();
return new FileStreamResult(test, "image/jpeg");
}
catch (Exception ex)
{
log.LogError(ex.StackTrace);
return new BadRequestResult();
}
}
[FunctionName(“GetImage”)]
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=“GetImage/{filename}”)]HttpRequest请求,
字符串文件名,
[Blob(“%blobContainerName%/{filename}”,FileAccess.Read,Connection=“StorageConnectionAppSetting”)]CloudBlobContainer Blob,
ILogger日志)
{
尝试
{
CloudBlob img=blob.GetBlobReference(文件名);
流测试=等待img.OpenReadAsync();
返回新的FileStreamResult(测试“image/jpeg”);
}
捕获(例外情况除外)
{
log.LogError(例如StackTrace);
返回新的BadRequestResult();
}
}
这是到目前为止我编写的单元测试代码
public async Task TestOkRequestGetImage()
{
_cloudBlobContainer = new Mock<CloudBlobContainer>(new Uri("http://mytest"));
_cloudBlob = new Mock<CloudBlob>(new Uri("http://mytest.com"));
Dictionary<string, StringValues> query = new Dictionary<string, StringValues>();
_cloudBlobContainer.Setup(x => x.GetBlobReference(It.IsAny<string>()))
.Returns(_cloudBlob.Object);
_cloudBlob.Setup(x => x.OpenReadAsync()).ReturnsAsync(It.IsAny<Stream>());
var httpReq = HttpRequestSetup(query, "");
var reqMock = new Mock<HttpRequest>();
var response = await GetImage.Run(reqMock.Object, "test", _cloudBlobContainer.Object, _log.Object);
response.Should().BeOfType<FileStreamResult>();
}
public异步任务TestOkRequestGetImage()
{
_cloudBlobContainer=new Mock(新Uri(“http://mytest"));
_cloudBlob=new Mock(新Uri(“http://mytest.com"));
字典查询=新建字典();
_cloudBlobContainer.Setup(x=>x.GetBlobReference(It.IsAny()))
.Returns(_cloudBlob.Object);
_Setup(x=>x.OpenReadAsync()).ReturnsAsync(It.IsAny());
var httpReq=HttpRequestSetup(查询“”);
var reqMock=new Mock();
var response=wait GetImage.Run(reqMock.Object,“test”、\u cloudBlobContainer.Object、\u log.Object);
response.Should().BeOfType();
}
以下是错误TestOkRequestGetImage引发的异常:System.ArgumentException:无效blob地址'http://mytest.com/,缺少容器信息(参数“blobAddress”)
不知道为什么我不能像初始化CloudBlobContainer那样初始化CloudBob。有什么提示吗?Blob URL应该总是像
https://address//blob-name
。由于您只是在使用地址部分,我相信您会遇到这个错误。您好@GauravMantri,谢谢,您所说的实际上是正确的。