azure - 如何对 azure 函数 blob 存储触发选项进行单元测试?
问题描述
我有一个 azure 函数,当 zip 文件上传到 azure blob 存储容器时会触发该函数。我在内存中解压缩文件并处理内容并将结果添加/更新到数据库中。而对于 db 部分,我可以使用 in memory db 选项。不知何故,我不太确定如何模拟 blob 触发器以对这个 azure 函数进行单元测试。
所有的官方示例和一些博客大多都在讨论 Http 触发器(模拟 httprequest)和队列触发器(使用 IAsynCollection)。
[FunctionName("AzureBlobTrigger")]
public void Run([BlobTrigger("logprocessing/{name}", Connection = "AzureWebJobsStorage")]Stream blobStream, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {blobStream.Length} Bytes");
//processing logic
}
解决方案
github上有一个关于Azure功能的单元测试/集成测试项目blob trigger
,请在您身边尝试。请注意,单元测试代码位于文件夹中。FunctionApp.Tests
来自github的一些关于blob触发器的代码片段:
BlobFunction.cs 的单元测试代码
namespace FunctionApp.Tests
{
public class BlobFunction : FunctionTest
{
[Fact]
public async Task BlobFunction_ValidStreamAndName()
{
Stream s = new MemoryStream();
using(StreamWriter sw = new StreamWriter(s))
{
await sw.WriteLineAsync("This is a test");
BlobTrigger.Run(s, "testBlob", log);
}
}
}
}