0

先介绍一下场景:

  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)wiremock-container

测试逻辑如下:

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

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

a) 在队列中推送消息

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

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

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

4

1 回答 1

0

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

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

于 2021-01-12T08:07:23.433 回答