我正在尝试构建一个用于生成对象的Generic testbuilder,我想在测试中使用它。我想要创建的一件事是Mock接口实现。我希望这些Mocks具有严格的mockbehaviour,并且设置afaik的唯一方法是使用constructor参数。我正在使用此代码创建我的界面模拟:
public object Build(Type type)
{
if (type.IsInterface)
{
List<object> mockParameters = new List<object>();
mockParameters.Add(MockBehavior.Strict);
Mock mock = (Mock)Activator.CreateInstance(typeof(Mock<>).MakeGenericType(type), mockParameters);
return mock.Object;
}
}
这给了我一个ArgumentException:无法为接口模拟传递构造函数参数。 如何在我用反射创建的模拟上设置MockBehavior.Strict?
答案 0 :(得分:1)
您的代码可以大大简化为:
public T Build()
{
if (typeof(T).IsInterface)
{
return new Mock<T>(MockBehavior.Strict).Object;
}
}