Moq NUnit测试System.Reflection.TargetParameterCountException:参数计数不匹配

时间:2016-05-24 10:49:56

标签: c# unit-testing nunit moq

我有一个界面:

public interface IConfig
{
    // other methods...
    T GetEnum<T>(string name, bool ignoreCase = false, T @default = default(T)) where T : struct;
}

我的SUT使用:

public void DoSomething(IConfig config)
{
    var enumVal = config.GetEnum("MyEnum", false, MyEnum.A));
}

我的测试Moq是:

var configMock = new Mock<IConfig>();
configMock.Setup(r => r.GetEnum("MyEnum", It.IsAny<bool>(), It.IsAny<MyEnum>())).Returns<MyEnum>(r => MyEnum.B);
sut.DoSomething(configMock.Object);

测试运行时,System.Reflection.TargetParameterCountException : Parameter count mismatch.

失败

如果我指定Returns子句并允许它返回默认值,那么模拟效果正常,那么问题就出现了吗?

1 个答案:

答案 0 :(得分:0)

我通过替换

来运行它
Returns<MyEnum>(r => MyEnum.B);

.Returns(MyEnum.B);