我有一个要模拟的依赖项。
public abstract class MyDependency
{
protected Dictionary<string, object> _outputs = new Dictionary<string, object>();
public Dictionary<string, object> Outputs
{
get
{
return _outputs;
}
}
}
为了进行单元测试,我需要公共(public)属性
Outputs
返回一个已知值。我知道我们不能 mock 字段或非虚拟成员。因此,我可以创建自己的模拟MyDependency
来设置后备字段_outputs
:public class MockMyDependency : MyDependency
{
public MockMyDependency()
{
_outputs = new Dictionary<string, object>
{
{ "key", "value" }
};
}
}
但是,是否可以使用Moq来执行此操作而无需显式创建自己的派生模拟类?
最佳答案
如果您不能将属性更改为虚拟属性或定义接口(interface)(我假设如果您不能执行第一个操作,那么您也将无法执行第二个操作),那么我只会看到两个可能的选择:
关于c# - 我可以使用Moq设置字段的值吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15910621/