azure - 在模拟 Azure CloudBlob 方面需要帮助
问题描述
这是我需要测试的功能
[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();
}
}
这是我到目前为止编写的单元测试代码。
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>();
}
这是错误TestOkRequestGetImage threw exception: System.ArgumentException: Invalid blob address 'http://mytest.com/', missing container information (Parameter 'blobAddress')
不知道为什么我不能像初始化 CloudBlobContainer 一样初始化 CloudBob。有小费吗?
解决方案
推荐阅读
- django - 如何在 Django 中实现注销测试用例?
- java - 为故障安全的 Maven 插件禁用 TestNG,仅保留用于万无一失
- python-3.x - 执行 python 编译脚本时出现错误'GLIBC_2.29 not found'
- ruby-on-rails - 从 jdbc 获取到 elasticsearch 的数据的有用查询
- python - 如何解决这个排列编码问题?
- python - 如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python
- sockets - 在 gunicorn 中并行运行烧瓶和 tcp 套接字
- java - 使用 AES scala 进行文件加密和解密
- android - 房间数据库的类型转换器不起作用
- laravel-fortify - laravel fortify 登录后如何获取用户信息