我有一个函数返回一个匿名类型,我想在我的MVC控制器中进行测试。将匿名类型转换为动态
public JsonResult Foo()
{
var data = new
{
details = "something",
more = "More"
};
return Json(data);
}
我想验证我从富函数获取数据,我在做什么,现在越来越的数据类型,并把它的属性值与反思。
[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'。请参阅[匿名类型是内部的,C#4.0 Dynamic Beware!](http://www.heartysoft.com/anonymous-types-c-sharp-4-dynamic)感谢@MarcGravell指出匿名对象是'internal' ! – TrueWill
+1为InternalsVisibleTo建议。奇迹般有效。 –