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

本文关键字:受保护 类变量 模拟 MicrosoftMoles | 更新日期: 2023-09-27 17:57:27

我有下面的示例代码作为类变量。

protected static readonly string _url = "SomeURL";

我想通过stub类型或moled类型访问_url变量。在测试时,可以通过存根类型访问公共静态类变量。但不是私有或受保护的静态类变量。那么,关于从摩尔访问私有或受保护的类变量,有什么想法吗?这将非常有帮助。

谢谢!

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

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

public class MyActualClass
{
  protected static readonly string _url = "SomeURL";
  //... other code
}
public class MyActualClassStub : MyActualClasss
{
  public string GetUrlValue()
  {
    return _url;
  }
}

类似的东西。请注意,您不能更改只读成员或属性的值

编辑:我刚刚意识到你特别问过如何使用Moles。我没有使用过Moles,所以我不能在这个方向上提供任何建议。但是,当您需要在测试场景中"获取"受保护的成员、属性或方法时,上述方法在许多情况下都很有用。