我有一个返回值的方法
return new System.Web.Mvc.JsonResult()
{
Data = new
{
Status = "OK",
}
}
我需要编写一个单元测试来验证 jsonResult.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]
才能让您的单元测试程序集访问生产程序集中的匿名类型,因为它将使用 internal< 生成
访问。
或者,只使用反射。
关于c# - 如何读取匿名类型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981429/