gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:03:04 25 4
gpt4 key购买 nike

我正在尝试构建一个通用测试构建器来生成我想在测试中使用的对象。我想创建的其中一件事是接口(interface)的 Mock 实现。我希望这些模拟具有严格的模拟行为,并且设置该 afaik 的唯一方法是通过构造函数参数。我正在使用这段代码来创建我的界面模拟:

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:无法为接口(interface)模拟传递构造函数参数。我如何在使用反射创建的模拟上设置 MockBehavior.Strict?

最佳答案

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

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

关于c# - 如何使用 Moq 使用带参数的反射创建模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com