如何模拟公共只读字段

时间:2011-12-13 06:50:15

标签: mocking moq

使用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);       
    }
}

1 个答案:

答案 0 :(得分:3)

您可以更改代码吗?将其设为属性而不是可公开访问的字段。除了常量(或有效常量,公共静态只读不可变值)之外,您通常应该将字段设为私有。

你也可以改变你的类以允许将值注入其中,而不是必须自己提出它。这取决于你真正想做的事情。