在我的项目中,我们有一个测试数据存储库,用于集成测试。然后,此存储库用于创建可通过测试方法调用的模拟工作单元。我在尝试访问执行断言时遇到问题。
我想断言的数据保存在source
我一直在寻求使用反射访问非公开成员,但以下内容返回null
:
PropertyInfo pInfo = vms.GetType().GetProperty("SourceInterface", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
用SourceInterface
替换source
也会返回null
有没有办法可以从SourceInterface
检索source
个对象?
编辑: 测试方法:
[TestMethod]
public void GetAllVMS_VMSReturned()
{
IEnumerable<SourceInterface> vms = controller.GetAllVMS();
Assert.IsTrue(vms.ToList().Count > 0); //Throws NullReferenceException
}
待测方法:
public IEnumerable<SourceInterface> GetAllVMS()
{
return database.SourceInterfacesRepository.GetAll();
}
答案 0 :(得分:1)
source
不是属性,而是字段。这样做:
FieldInfo[] privateFields = vms.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
然后,您可以根据需要过滤privateFields
。