我正在从 System.DirectoryServices 编写 GroupPrincipal 的存根实现,因此我可以对正在编写的使用此类的代码进行单元测试。我需要将测试数据放入其中的属性之一是基类的只读属性。当模拟对象进入应用程序代码时,应用程序代码将其转换为基类,当它引用该字段时,它获取基类引用而不是我的存根类中的引用。这是一个说明问题的单元测试:
class ClassWithString
{
private string _AttributeToTest;
public string AttributeToTest { get { return _AttributeToTest; } }
}
class StubClassWithString : ClassWithString
{
public string AttributeToTest { get { return "This is my string"; } }
}
[TestMethod]
public void TestStubClassWithStringCastToClassWithString()
{
ClassWithString toTest = new StubClassWithString();
Assert.IsNotNull(toTest.AttributeToTest);
}
这个断言会失败。无论如何使用反射或任何其他技巧来获取引用(转换为基类)以返回子类的值?我试图避免添加另一层抽象,例如围绕基类的包装类。