当前位置: 首页 > 知识库问答 >
问题:

如何单元测试azure功能blob存储触发选项?

子车凯泽
2023-03-14

我有一个azure函数,当zip文件上传到azure blob存储容器时会触发它。我在内存中解压缩文件并处理内容并将结果添加/更新到数据库中。而对于db部分,我可以使用内存中的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个答案

井高峯
2023-03-14

github中有一个关于azure函数的单元测试/集成测试的项目,包括blob触发器,请在您身边试一试。注意单元测试代码在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);
            }
        }
    }
}
 类似资料:
  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>

  • 我们遇到了Blob触发函数的问题。该函数是用javascript编写的。我们费了很大的劲才把自动化部署流程落实到位。以下是我们遵循的步骤。 > 使用ARM模板和参数文件在现有资源组中创建函数应用程序 通过<code>Kudu<code>api<code>调用RestMethod-Uri“$apiUrl”-方法Put-InFile“$functionCodeArchivePath”-凭证$crede

  • 我有一个Java项目,它使用了一些Azure函数,如HttpTrigger和QueueTrigger。我使用原型来生成这个项目,因此它可以使用HttpTrigger的一些样板代码和它的单元测试,但对QueueTrigger没有任何帮助。我正试图得到帮助,为这个QueueTrigger编写一个好的单元测试,它实际上是从队列中读取消息(弹出)。队列的代码如下所示: 有没有人能推荐一下这个队列触发azu

  • 我们目前正在迁移到一个新的Azure订阅,在执行Azure功能时出现问题,这些功能在我们的旧Azure订阅中按预期工作。我们的旧订阅和新订阅之间的主要区别在于,我们已经建立了一个具有子网的虚拟网络,并在子网后面部署了我们的资源。 我们还必须从旧订阅中的Azure应用服务迁移到新订阅中的Azure应用环境。 我们的Azure环境包括: 应用服务环境 应用服务计划I1 Azure应用环境和存储容器位于

  • Google Apps Script支持将事件传递给触发函数的触发器。不幸的是,开发环境将允许您在没有参数传递的情况下测试函数,因此您无法以这种方式模拟事件。如果您尝试,您会得到一个错误,如: 未定义e。 或者 TypeError:无法读取属性*从未定义 (其中未定义) 人们可以将事件视为可选参数,并使用JavaScript中是否有更好的方法来执行可选函数参数的任何技术将默认值插入触发器函数。但这

  • 您好,我正在创建一个新的blob触发的azure函数,我想了解函数头中“Connection=”参数的作用: 我所做的是完全删除该参数,在我将其部署到我的azure订阅后,它就可以正常工作了。因此,我想知道如果我没有使用连接参数指定任何特定帐户,该函数如何确定要使用哪个存储帐户。 这就是我部署函数的方式: