【发布时间】:2016-09-21 12:56:34
【问题描述】:
我有一个界面:
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));
}
我的测试起订量是:
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 子句并允许它返回默认值,则模拟可以工作,那么问题似乎就在那里?
【问题讨论】:
标签: c# unit-testing nunit moq