首页 > 解决方案 > 如何对 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
        }

标签: azureazure-functionsazure-blob-storage

解决方案


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

推荐阅读