如何对Azure函数Blob存储触发器选项进行单元测试?

时间:2019-09-03 18:33:36

标签: azure-functions azure-blob-storage

我有一个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
        }

1 个答案:

答案 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);
            }
        }
    }
}