如何在Microsoft moles中模拟私有或受保护的类变量?

时间:2014-04-09 06:49:50

标签: c# .net unit-testing mocking pex-and-moles

我将以下示例代码作为类变量。

protected static readonly string _url = "SomeURL";

我想通过stub类型或moled类型访问该_url变量。在我测试时,可以通过存根类型访问公共静态类变量。但不是私有或受保护的静态类变量。有关从鼹鼠访问私有或受保护的类变量的任何想法?这将非常有帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以创建从包含受保护静态变量的类派生的存根。在测试中使用存根而不是您实际尝试测试的类:

public class MyActualClass
{
  protected static readonly string _url = "SomeURL";
  //... other code
}

public class MyActualClassStub : MyActualClasss
{
  public string GetUrlValue()
  {
    return _url;
  }
}

这样的事情。请注意,您无法更改只读成员或属性的值。

编辑:我刚刚意识到你特意问过如何用Moles做这件事。我没有使用过Moles,所以我无法向这个方向提供任何建议。但是,上述方法在许多情况下非常有用,因为您需要" get at"受保护的测试场景中的成员,属性或方法。