我試圖在我的控制器之一中返回一個JsonResult單元測試一個方法。令我驚訝的下面的代碼沒有工作:斷言包含匿名類型的JsonResult
[HttpPost]
public JsonResult Test() {
return Json(new {Id = 123});
}
這是我如何測試它(也注意到,測試代碼駐留在另一個組件):
// Act
dynamic jsonResult = testController.Test().Data;
// Assert
Assert.AreEqual(123, jsonResult.Id);
的Assert
拋出異常:
'對象' 不包含一個定義爲 'ID'
我已經解決它通過使用以下內容:
[HttpPost]
public JsonResult Test() {
dynamic data = new ExpandoObject();
data.Id = 123;
return Json(data);
}
我想了解爲什麼不是第一個工作?它似乎也在基本上處理任何事情,但一個匿名類型。
我試過你的代碼與匿名類型,它對我工作得很好。不知道爲什麼你得到這個錯誤。 –
打印出'jsonResult.GetType()'時會得到什麼? (錯誤表明它認爲它的類型是'object',而不是類型'<> f__AnonymousType0',這是我所期望的) –
該類型確實是對象。我預計它會自己工作,不知道爲什麼我會得到這些結果。 –