【问题标题】:AzureFunctions: How to make a sync call to a QueueTrigger Function for an automated functional testAzureFunctions:如何对 QueueTrigger 函数进行同步调用以进行自动化功能测试
【发布时间】:2021-01-09 12:15:30
【问题描述】:

让我介绍一下场景:

  1. 我需要使用队列触发器测试 AzureFunction:

    [FunctionName("AFunction")]
    public async Task DispatchAction([QueueTrigger("queuename")] string message)
    {
        await DoMyLogicAsync();
    }
    
  2. 测试需要由我的 docker-compose 测试环境中的“功能测试容器”运行,它由以下组成:

    a) 功能测试容器:运行 nUnit 测试套件的 .net 核心容器

    b) azure-function-container:此容器承载 azure 函数

    c) azurite-container:此容器托管队列服务器

    d) sql-server-container

    e) 线模容器

测试逻辑如下:

  1. 清除sql数据库、队列和wiremock状态
  2. 准备wiremock存根
  3. 以某种方式触发函数
  4. 等待函数结束
  5. 断言函数在 sql server、队列中产生了什么以及调用了什么 Wiremock 存根

据我所知,我有两种触发功能的方法:

a) 在队列中推送消息

b) 使用 azure 函数的管理 API /admin/functions/afunction

问题是它们都没有给出函数何时结束执行的任何提示。

这是我的问题:有没有办法以“同步”方式调用函数(以便我可以知道执行何时结束)?

【问题讨论】:

    标签: automated-tests azure-functions functional-testing queuetrigger


    【解决方案1】:

    我认为它无法实现。队列触发函数在 azure server 中作为一个实例运行,我们可以触发它运行。它不响应 HttpTrigger 函数之类的任何数据。所以它不能在你的整个过程中同步执行。

    为了解决您的问题,我认为您可以在函数末尾添加一些代码来执行操作。该操作用于让您知道函数执行完成。或者另一种解决方案是将函数后的步骤移动到您的函数代码中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多