首页 > 解决方案 > 起订量持久函数 IDurableOrchestrationContext 时设置 CallActivityAsync 始终返回 null

问题描述

我有一个 Durable Orchestrator 函数,它从活动函数返回一个列表:

var returnList = await context.CallActivityAsync<List<MyObject>>("Activity", (input, context.InstanceId));

我的 xUnit 测试设置如下

var mock = new Mock<IDurableOrchestrationContext>();

var mockLogger = new Mock<Microsoft.Extensions.Logging.ILogger>();

var _returnList = new List<MyObject>();

mock.Setup(x=>x.CallActivityAsync<List<MyObject>("Activity",It.IsAny<Object>, string>>())).ReturnsAsync(_returnList);

var orch = new MyOrchestration();

await orc.Run(mock.Object,mockLogger.Object);

Durable Functions Orchestrator 函数总是在我希望它使用_returnList的地方返回 null - 感谢任何帮助。

注意:我使用的是 DI,所以我的编排和活动功能不是静态的。

标签: c#moqazure-durable-functions

解决方案


解决了。问题是线路

mock
    .Setup(x=>x.CallActivityAsync<List<MyObject>("Activity",It.IsAny<Object>, string>>()))
    .ReturnsAsync(_returnList);

应该是

mock
    .Setup(x => x.CallActivityAsync<List<MyObject>>("Activity",It.IsAny<(List<MyObject>, string)>()))
    .ReturnsAsync(_returnList);

推荐阅读