如何读取匿名类型的属性?
我有一个返回的方法
return new System.Web.Mvc.JsonResult() { Data = new { Status = "OK", } }
我需要编写一个unit testing,我需要validationjsonResult.Data.status= "OK"
。
我如何阅读状态属性?
更新:我尝试了[assembly:InternalsVisibleTo(“TestingAssemblyName”)],但这没有帮助。 我一直收到错误{“’System.Web.Mvc.JsonResult’不包含’Status’的定义”}
此外,我想我不想修改我正在测试的代码。
所以我接受了Jon的建议并使用了反思。
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]
以使您的unit testing程序集访问生产程序集中的匿名类型,因为它将通过internal
访问生成。
或者,只需使用reflection。
dynamic
:
dynamic testObject = YourMethodThatReturnsDynamicObject().Data; Assert.AreEqual("OK", testObject.Status);