先介绍一下场景:
我需要使用队列触发器测试 AzureFunction:
[FunctionName("AFunction")] public async Task DispatchAction([QueueTrigger("queuename")] string message) { await DoMyLogicAsync(); }
测试需要由我的 docker-compose 测试环境中的“功能测试容器”运行,该环境由以下组成:
a) 功能测试容器:运行 nUnit 测试套件的 .net 核心容器
b) azure-function-container:此容器承载 azure 函数
c) azurite-container:此容器托管队列服务器
d) sql-server-container
e)wiremock-container
测试逻辑如下:
- 清除sql数据库、队列和wiremock状态
- 准备wiremock存根
- 以某种方式触发功能
- 等待函数结束
- 对在 sql server 中生成的函数、队列中的函数以及调用了什么 wiremock 存根进行断言
据我所知,我有两种触发功能的方法:
a) 在队列中推送消息
b) 使用 azure 函数的管理 API /admin/functions/afunction
问题是它们都没有给出函数何时结束执行的任何提示。
这是我的问题:有没有办法以“同步”方式调用函数(这样我就可以知道执行何时结束)?