使用Moq我如何模拟以下类,所以我在单元测试中返回虚拟值:
public abstract class DataService
{
public readonly string DataDirectory; //I need to mock the return value
protected DataService()
{
DataDirectory = "c:\temp";
}
}
由于
修改
在课堂上添加更多肉类,以便了解问题:
public abstract class DataService
{
public readonly DirectoryInfo DataDirectory;
protected GitService()
{
DataDirectory = new DirectoryInfo("c:\temp");
}
public virtual object GetRepositoryByName(string name)
{
//Locate the repo, build it and return it
string path = Path.Combine(DataDirectory.FullName, name);
return new BuildRepository(path);
}
}
答案 0 :(得分:3)
您可以更改代码吗?将其设为属性而不是可公开访问的字段。除了常量(或有效常量,公共静态只读不可变值)之外,您通常应该将字段设为私有。
你也可以改变你的类以允许将值注入其中,而不是必须自己提出它。这取决于你真正想做的事情。