Moq + Unit Testing - System.Reflection.TargetParameterCountException: Parameter count mismatch

后端 未结 4 377
轻奢々
轻奢々 2020-11-30 12:15

I\'m tring to use a lambda with a multiple-params function but Moq throws this exception at runtime when I attempt to call the mock.Object.Convert(value, null, null, n

4条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-30 12:37

    It's your Returns clause. You have a 4 parameter method that you're setting up, but you're only using a 1 parameter lambda. I ran the following without issue:

    [TestMethod]
    public void IValueConverter()
    {
        var myStub = new Mock();
        myStub.Setup(conv => conv.Convert(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())).
            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(expected, (int) actual);
    }
    
    
    

    No exceptions, test passed.

    提交回复
    热议问题