azure - 持久的 Azure 函数和集成测试
问题描述
我正在尝试使用 SpecFlow 和 MSTest 测试(集成测试)我的 Azure Durable Function v3。
函数使用 DI 和 Startup 类进行初始化:
[assembly: FunctionsStartup(typeof(Startup))]
namespace MyNamespace.Functions
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
ConfigureServices(builder.Services);
}
...
Orchestrator 入口点由 HTTP 端点触发:
public class Function1
{
[FunctionName(nameof(Function1))]
public async Task<IActionResult> DoYourJob(
[HttpTrigger(AuthorizationLevel.Anonymous, methods: "post", Route = "api/routes/function1")] HttpRequestMessage httpRequest,
[DurableClient] IDurableOrchestrationClient starter)
{
...
我的 IntegrationTest 构造函数初始化 Az 函数HostBuilder
(感谢这篇文章):
[Binding]
public sealed class Function1StepDefinitions
{
private readonly IHost _host;
private readonly Function1 _function;
public Function1StepDefinitions()
{
var startup = new MyNamespace.Functions.Startup();
_host = new HostBuilder()
.ConfigureWebJobs(config =>
{
config.AddDurableTask(options =>
{
options.HubName = "MyTaskHub";
});
startup.Configure(config);
})
.ConfigureServices(ReplaceTestOverrides) // Method to replace/mock some external services
.Build();
_function = new Function1(Host.Services.GetRequiredService<IOptions..., ..);
在我的测试中,我不知道如何检索IDurableOrchestrationClient
以调用我的 HTTP 触发器:
[When(@"I call my function")]
public async Task WhenICallMyFunction()
{
var request = new HttpRequestMessage();
await _function.DoYourJob(
request,
Host.Services.GetService<IDurableOrchestrationClient>()); // This is always null
...
有没有办法检索它IDurableOrchestrationClient
并测试我的整个功能(使用 Orchestrator 和活动调用)?
解决方案
推荐阅读
- objective-c - ScrollView 正在吃 Swipe Gesture Recognizer
- scala - 当数据流中没有数据时,不会触发 Spark 滑动窗口
- javascript - Firebase 避免多个客户端(网络)覆盖/更新相同的节点
- r - 窗口长度> 1的rollsumr:填充缺失值
- php - 将列从一个表复制到另一个表并从输入表单添加新列
- amazon-s3 - Nuxeo:使用预签名 URL 上传
- string - 如何使用单个命令在 Dockerfile 中输出多行字符串
- android - 通过 http Wap 推送消息
- node.js - 如何在 react-native 中安装 wsdl 连接
- c# - 刷新后保持组件状态