我有一个界面:
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
子句并允许它返回默认值,那么模拟效果正常,那么问题就出现了吗?
答案 0 :(得分:0)
我通过替换
来运行它Returns<MyEnum>(r => MyEnum.B);
带
.Returns(MyEnum.B);