dev*_*747 12 c# anonymous-types jsonresult
我有一个返回的方法
return new System.Web.Mvc.JsonResult()
{
Data = new
{
Status = "OK",
}
}
Run Code Online (Sandbox Code Playgroud)
我需要编写一个单元测试,我需要验证它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);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 18
最简单的方法可能是使用动态类型:
dynamic foo = ret.Data;
Assert.AreEqual("OK", foo.status);
Run Code Online (Sandbox Code Playgroud)
请注意,您需要使用[InternalsVisibleTo]以便让您的单元测试程序集访问生产程序集中的匿名类型,因为它将通过internal访问生成.
或者,只需使用反射.
dynamic:
dynamic testObject = YourMethodThatReturnsDynamicObject().Data;
Assert.AreEqual("OK", testObject.Status);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5264 次 |
| 最近记录: |