Lambda函数导致参数0的编译器错误,1或多个的异常

CDreiser

我在带有Moq的C#.NET CORE环境中使用lambda函数。更具体地说,我在类似这样的设置方法中使用它:

MockObject.Setup(o => o.GetList()).Returns<List<DifferentClass>>(() => Task.FromExisting(existingList));

问题出在.Returns()调用中。如果我使用空的Lambda,则会收到以下编译器错误:

  error CS1593: Delegate 'Func<List<DifferentClass>,  Task<List<DifferentClass>>>' does not take 0 arguments.

这意味着我需要为lambda添加一个参数。我这样做如下:

MockObject.Setup(o => o.GetList()).Returns<List<DifferentClass>>(o => Task.FromExisting(existingList));

现在,抛出一个异常,而不是编译器错误:

System.ArgumentException : Invalid callback. Setup on method with 0 parameter(s) cannot invoke callback with different number of parameters (1).

堆栈跟踪引用同一行代码。

这是示例代码:

测试:

public class UnitTest1
{
    static readonly Mock<IMyClass> MockObject;

    static UnitTest1()
    {
        MockObject = new Mock<IMyClass>();
        var existingList = new List<DifferentClass>();
        // Line causing exception below
        MockObject.Setup(o => o.GetList()).Returns<List<DifferentClass>>(() => Task.FromExisting(existingList));
    }

    // Tests go here...
    [Fact]
    Test1()
    {
        //...
    }
}

这是模拟的类IMyClass:

public interface IMyClass
{
    Task<List<DifferentClass>> GetList();
}

看来我的两个选择是引发异常或无法编译。我不确定在这里可以做什么。如果有什么我想念的,请告诉我。

恩科西

给定模拟接口的定义,只需.ReturnsAsync(existingList);推断出调用和类型即可。

static UnitTest1()
{
    MockObject = new Mock<IMyClass>();
    var existingList = new List<DifferentClass>();
    MockObject
        .Setup(o => o.GetList())
        .ReturnsAsync(existingList);
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

编译器给出lambda函数强制转换错误

为什么一个空的Lambda和构造函数导致编译器错误明确的回报(Java的漏洞?)

错误的重载导致编译器错误

模板模板参数会导致Clang下的编译器错误,但不会导致GCC

DataBinding导致Kotlin编译器错误

引发异常时的编译器错误

内部编译器错误:Classcast异常

具有功能类型参数的模板导致编译器错误

C ++使用匿名对象调用函数会导致编译器错误

变量名与函数名相同,导致编译器错误...为什么?

Live Sass编译器-@use导致编译错误

Kotlin解包函数编译器错误

Scala高阶函数编译器错误

编译器选择错误的重载函数

使用未分配的参数编译器错误,用于从函数输出参数接收的变量吗?

从值捕获变量分配给Lambda参数时,gcc编译器出现分段错误

比较器 reversed() 导致编译器错误

线程池的lambda函数内部的编译器错误变量“未捕获”

使用类的命名空间参数化构造函数时的编译器错误

对具有默认参数值的函数使用通配符模式会引发编译器254错误

Ansi C 参数给线程函数获取编译器错误

具有actionBlock的宏会导致编译器错误

嵌套的“ static_for”会导致编译器错误

FacebookShare更新后导致编译器错误

添加额外的常量会导致编译器错误

宏导致编译器错误,名称为NSString变量

比较枚举的值会导致编译器错误

NVC dxDataGrid按钮列导致编译器错误

C宏_Generic导致意外的编译器错误