【发布时间】:2017-10-04 09:06:38
【问题描述】:
我正在尝试创建一些抽象类,该类将保留一些常用操作来按 Moq 准备存根。我写了一些东西,但我无法克服错误
public abstract class StubsCreatorAbstract
{
public Mock<T> GenerateObject<T>() where T : IStub
{
var mock = new Mock<T>();
return mock;
}
public Mock<D> SetupValue<T, D>(Mock<D> stub, string nameOfField, T value) where D : IStub
{
var field = typeof(D).GetProperty(nameOfField);
if (field == null)
{
throw new ArgumentException("Field do not exist");
}
field.SetValue(stub.Object, value);
return stub;
}
}
问题是:Mock 必须是引用类型。我的问题是——有可能克服这个问题吗?提前致谢
更新:
这是编译器错误。关于 T 的问题 - 它在说
"the type 'T' must be a reference type in order to use it as parameter 'T' in the generic type or method 'Mock<T>".
【问题讨论】:
-
Mock must be a reference type.那是编译器错误吗?运行时错误?还有什么?请向我们展示您用来调用GenerateObject的代码。 -
这是编译器错误。 IDE 说 Mock
是错误的。关于 T 的问题 - 它是说“类型 'T' 必须是引用类型才能将其用作泛型类型或方法 'Mock 中的参数 'T'”。
标签: c# unit-testing moq