我有一个函数,它返回一个匿名类型,我想在我的MVC控制器中对其进行测试。
public JsonResult Foo()
{
var data = new
{
details = "something",
more = "More"
};
return Json(data);
}
我想要验证从Foo函数获取的数据,现在我正在使用反射获取数据类型并获取其属性值。
[Test]
public void TestOne()
{
var data = _controller.Foo().Data;
var details = data.GetType().GetProperty("details").GetValue(data, null);
var more = data.GetType().GetProperty("more").GetValue(data, null);
Assert.AreEquals("something", details);
Assert.AreEquals("More", more);
}
是否有类似这样简单的方法来检查匿名属性?
[Test]
public void TestTwo()
{
var data = (dynamic) _controller.Foo().Data;
var details = data.details; // RunTimeBinderException object does not contain definition for details
var more = data.more;
Assert.AreEquals("something", details);
Assert.AreEquals("More", more);
}
InternalsVisibleTo
。请参见Anonymous Types are Internal, C# 4.0 Dynamic Beware!感谢@MarcGravell指出匿名对象为internal
! - TrueWill