如何使用Moq使用带参数的反射创建模拟?

时间:2011-09-28 09:05:23

标签: c# reflection moq

我正在尝试构建一个用于生成对象的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?

1 个答案:

答案 0 :(得分:1)

您的代码可以大大简化为:

public T Build()
{
    if (typeof(T).IsInterface)
    {
       return new Mock<T>(MockBehavior.Strict).Object;
    }
}