如何读取匿名类型的属性?

2024-02-04

我有一个返回的方法

return new  System.Web.Mvc.JsonResult()
{                     
    Data = new
    {
        Status = "OK", 
    }
}

我需要编写一个单元测试来验证这一点jsonResult.Data.status= "OK".

如何读取状态属性?

更新: 我尝试了 [程序集:InternalsVisibleTo("TestingAssemblyName")],但这没有帮助。我不断收到错误{“'System.Web.Mvc.JsonResult'不包含'状态'的定义”}

此外,我认为我宁愿不修改我正在测试的代码。

所以我采纳了乔恩的建议并进行了反思。

        var type = jsonResult.Data.GetType();

        var pinfo = type.GetProperty("Status");

        string  statusValue = pinfo.GetValue(jsonResult.Data,null).ToString();

        Assert.AreEqual("OK", statusValue);

最简单的方法可能是使用动态类型:

dynamic foo = ret.Data;
Assert.AreEqual("OK", foo.status);

请注意,您需要使用[InternalsVisibleTo]为了使您的单元测试程序集能够访问生产程序集中的匿名类型,因为它将使用以下命令生成internal access.

或者,只使用反射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何读取匿名类型的属性? 的相关文章

随机推荐