需要有关模拟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,谢谢,您所说的实际上是正确的。