ISetup <IDurableOrchestrationContext,任务<List <string >>不包含'ReturnsAsync'的定义

好奇小姐

我从耐用的Azure Functions(最新版本)开始,它是单元测试(使用x-unit)。下面是我的触发函数(http触发):

[FunctionName("funcEventSubscriber")]
public async Task<HttpResponseMessage> HttpStart(
    [HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestMessage req,
    [DurableClient] IDurableOrchestrationClient starter,
    ILogger log)
{
    try
    {
        string instanceId = await starter.StartNewAsync("funcEventOrchestrator", null);
        log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
        return starter.CreateCheckStatusResponse(req, instanceId);
    }
    catch (System.Exception ex)
    {
        _telemetryHelper.LogException(ex);
        throw;
    }
}

这是我的协调器功能,它启动了活动功能:

[FunctionName("funcEventOrchestrator")]
public async Task<List<string>> RunOrchestrator(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    try
    {
        var outputs = new List<string>();
        var reusultSet = new List<string>();
        outputs = await context.CallActivityAsync<List<string>>("funcActivityA", "");
        foreach (var item in outputs)
        {
            var result = await context.CallActivityAsync<List<TableRegionEntity>>("funcActivityB", item);
            if (result.Count > 0)
            {
                foreach (var data in result)
                {
                    List<string> inputObject = new List<string>();
                    inputObject.Add(data.Subscriber);
                    inputObject.Add(item);
                    reusultSet.Add(await context.CallActivityAsync<string>("funcActivityC", inputObject));
                }
            }
            else
            {
                reusultSet.Add(await context.CallActivityAsync<string>("funcActivityD", item));
            }
        }
        return reusultSet;
    }
    catch (System.Exception ex)
    {
        _telemetryHelper.LogException(ex);
        throw;
    }
}

我为Orchestrator函数编写的单元测试方法如下所示:

[Fact]
public async Task Run_returns_list_of_string()
{
    var mockContext = new Mock<IDurableOrchestrationContext>();
    mockContext.Setup(x => x.CallActivityAsync<List<string>>("funcActivityA", "")).ReturnsAsync(funcActivityAOutput);
    mockContext.Setup(x => x.CallActivityAsync<List<TableRegionEntity>>("funcActivityB", inputJsonString)).ReturnsAsync(funcActivityBOutput);
    mockContext.Setup(x => x.CallActivityAsync<string>("funcActivityC", funcActivityCInputObject)).ReturnsAsync(funcActivityCOutput);
    mockContext.Setup(x => x.CallActivityAsync<string>("funcActivityD", inputJsonString)).ReturnsAsync(funcActivityDOutput);

    // Instantiate funcEventSubscriber
    funcEventSubscriber funcEventSubscriberObj = new funcEventSubscriber(telemetryHelperMock.Object);

    // Act
    var result = await funcEventSubscriberObj.RunOrchestrator(mockContext.Object); // call orchestrator fn

    // Assert
    Assert.Equal(3, result.Count);
}

我的设置方式mockContext抛出错误。这是来自mockContext.Setupie第一行的错误

mockContext.Setup(x => x.CallActivityAsync<List<string>>("funcActivityA", "")).ReturnsAsync(funcActivityAOutput);`

在此处输入图片说明

我在哪里错了?

恩科西

在您的设置中,假设List<string>已将模拟成员定义为

IDurableOrchestrationContext.CallActivityAsync<TResult>(String, Object) Method

public Task<TResult> CallActivityAsync<TResult> (string functionName, object input);

哪里

TResult:计划活动函数的返回类型。

确保为模拟成员使用了正确的返回类型。这样,ReturnsAsync可以在设置中调用正确的扩展名

例如

//...

List<string> funcActivityAOutput = new List<string>() {
    //...populate list as needed
}
var mockContext = new Mock<IDurableOrchestrationContext>();
mockContext
    .Setup(x => x.CallActivityAsync<List<string>>("funcActivityA", ""))
    .ReturnsAsync(funcActivityAOutput);

//...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

System.Collections.Generic.List <string>'不包含'add'的定义

来自分类Dev

任务不包含“ FirstOrDefault”的定义

来自分类Dev

'List <int>'不包含'Last'的定义

来自分类Dev

'string'不包含C#的定义/错误

来自分类Dev

Linq错误:“ string []不包含'Except'的定义。”

来自分类Dev

为什么我的List对象不包含“添加”的定义?

来自分类Dev

.net核心3.1:'IAsyncEnumerable <string>'不包含'GetAwaiter'的定义

来自分类Dev

List(of String())包含String()

来自分类Dev

不包含“ DropDownList”的定义

来自分类Dev

不包含GetFromLocationAsync的定义

来自分类Dev

不包含“添加”的定义

来自分类Dev

不包含“方法”的定义

来自分类Dev

“ ***”不包含“ pnlMenu”的定义

来自分类Dev

不包含 ListItemAllFields 的定义

来自分类Dev

不包含 Key 的定义

来自分类Dev

错误CS1061:“ List <TrainingProductViewModel>”不包含有关尝试使用ModelView的定义

来自分类Dev

C#-string []不包含“ SkipLast”的定义,并且没有可访问的扩展方法

来自分类Dev

ValueTuple<(string LoanID, decimal x, ...)> 不包含 c# 中“loanID”的定义

来自分类Dev

CS1061:类型“string”不包含“classChoice”的定义,也没有扩展方法“classChoice”

来自分类Dev

“ ClaimsPrincipal”不包含“ GetUserId”的定义

来自分类Dev

不包含定义或扩展方法

来自分类Dev

IWindsorContainer不包含“ GetService”的定义

来自分类Dev

DBSet不包含Where的定义

来自分类Dev

“ RouteCollection”不包含“ MapMvcAttributeRoutes”的定义

来自分类Dev

“模型”不包含“对象”的定义

来自分类Dev

“对象”不包含“ rxDetail”的定义

来自分类Dev

GlobalConfiguration不包含配置的定义

来自分类Dev

IIDentity不包含“ GetUserId”的定义

来自分类Dev

IOwinContext不包含GetUserManager()的定义

Related 相关文章

  1. 1

    System.Collections.Generic.List <string>'不包含'add'的定义

  2. 2

    任务不包含“ FirstOrDefault”的定义

  3. 3

    'List <int>'不包含'Last'的定义

  4. 4

    'string'不包含C#的定义/错误

  5. 5

    Linq错误:“ string []不包含'Except'的定义。”

  6. 6

    为什么我的List对象不包含“添加”的定义?

  7. 7

    .net核心3.1:'IAsyncEnumerable <string>'不包含'GetAwaiter'的定义

  8. 8

    List(of String())包含String()

  9. 9

    不包含“ DropDownList”的定义

  10. 10

    不包含GetFromLocationAsync的定义

  11. 11

    不包含“添加”的定义

  12. 12

    不包含“方法”的定义

  13. 13

    “ ***”不包含“ pnlMenu”的定义

  14. 14

    不包含 ListItemAllFields 的定义

  15. 15

    不包含 Key 的定义

  16. 16

    错误CS1061:“ List <TrainingProductViewModel>”不包含有关尝试使用ModelView的定义

  17. 17

    C#-string []不包含“ SkipLast”的定义,并且没有可访问的扩展方法

  18. 18

    ValueTuple<(string LoanID, decimal x, ...)> 不包含 c# 中“loanID”的定义

  19. 19

    CS1061:类型“string”不包含“classChoice”的定义,也没有扩展方法“classChoice”

  20. 20

    “ ClaimsPrincipal”不包含“ GetUserId”的定义

  21. 21

    不包含定义或扩展方法

  22. 22

    IWindsorContainer不包含“ GetService”的定义

  23. 23

    DBSet不包含Where的定义

  24. 24

    “ RouteCollection”不包含“ MapMvcAttributeRoutes”的定义

  25. 25

    “模型”不包含“对象”的定义

  26. 26

    “对象”不包含“ rxDetail”的定义

  27. 27

    GlobalConfiguration不包含配置的定义

  28. 28

    IIDentity不包含“ GetUserId”的定义

  29. 29

    IOwinContext不包含GetUserManager()的定义

热门标签

归档