我有一個函數返回一個匿名類型,我想在我的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建議。奇蹟般有效。 –