Moq + 单元测试 - System.Reflection.TargetParameterCountException:参数计数不匹配

2024-01-30

我试图将 lambda 与多个参数函数一起使用,但当我尝试调用时,Moq 在运行时抛出此异常mock.Object.Convert(value, null, null, null); line.


System.Reflection.TargetParameterCountException: Parameter count mismatch  

代码是:

var mock = new Mock<IValueConverter>();

mock.Setup(conv => conv.Convert(It.IsAny<Object>(), It.IsAny<Type>(),
    It.IsAny<Object>(), It.IsAny<CultureInfo>())).Returns((Int32 num) => num + 5);

var value = 5;
var expected = 10;
var actual = mock.Object.Convert(value, null, null, null);

正确的实施方法是什么?


是你的Returns条款。您正在设置一个 4 参数方法,但仅使用 1 参数 lambda。我运行以下命令没有问题:

[TestMethod]
public void IValueConverter()
{
    var myStub = new Mock<IValueConverter>();
    myStub.Setup(conv => conv.Convert(It.IsAny<object>(), It.IsAny<Type>(), It.IsAny<object>(), It.IsAny<CultureInfo>())).
        Returns((object one, Type two, object three, CultureInfo four) => (int)one + 5);

    var value = 5;
    var expected = 10;

    var actual = myStub.Object.Convert(value, null, null, null);

    Assert.AreEqual<int>(expected, (int) actual);
}

没有异常,测试通过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Moq + 单元测试 - System.Reflection.TargetParameterCountException:参数计数不匹配 的相关文章

随机推荐