我有一个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
}
答案 0 :(得分:1)
在github中有一个有关天蓝色功能的单元测试/集成测试的项目,其中包括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);
}
}
}
}