【发布时间】:2020-01-23 14:02:14
【问题描述】:
集成测试 Azure TimerTrigger 函数的最佳方法是什么?
我有一个 Azure 函数,它将数据从 Oracle 表复制到 Azure SQL 表并通过 SendGrid 发送电子邮件。这是伪代码:
public static void Run(TimerInfo myTimer, ILogger log)
{
Fecth_Data_From_Oracle_table()
Insert_Data_To_AzureSQL_table()
Send_StatusEmail_Via_SendGrid()
}
正如看到的函数没有返回任何东西,那么我将如何进行集成测试这个函数呢?
我是否将返回类型修改为 Task<IActionResult> 之类的东西,但随后我正在修改一些已经运行的代码并根据方法的结果返回一些 HTTP 代码?
我是否只使用 api 键和 HttpClient 类 f.x 从 Visual Studio 调用计时器触发函数。 GET https://myfunc01.azurewebsites.net/admin/functions/TimerTriggereFunc?code={key} 并断言其返回值? (这要求函数返回一些东西。)
Jeff Holan 提供了使用 System.Diagnostics.Process 类启动和停止 .NET Core CLI (dotnet.exe) 在本地集成测试 Azure Functions 的示例,该 CLI 反过来又通过 func 启动 Azure Functions 主机。 dll,但这似乎过于复杂。对托管在 Azure 中的 Azure Function 进行集成测试是错误的方法,还是必须在本地进行测试?
我似乎找不到明确的指导方针。
【问题讨论】:
-
您的测试目的是什么?例如,如果您想确保您的“Insert_Data_To_AzureSQL_table”函数已成功运行,那么您应该检查它是否在您的数据库中插入了预期的数据。
标签: azure-functions integration-testing