Я пытался использовать unit test метод в одном из моих контроллеров, возвращающих JsonResult. К моему удивлению, следующий код не работал:
[HttpPost]
public JsonResult Test() {
return Json(new {Id = 123});
}
Вот как я его тестирую (также обратите внимание, что тестовый код находится в другой сборке):
// Act
dynamic jsonResult = testController.Test().Data;
// Assert
Assert.AreEqual(123, jsonResult.Id);
Assert
генерирует исключение:
'object' не содержит определения для 'Id'
С тех пор я разрешил это, используя следующее:
[HttpPost]
public JsonResult Test() {
dynamic data = new ExpandoObject();
data.Id = 123;
return Json(data);
}
Я пытаюсь понять, почему не первый работает? Он также, похоже, работает с чем угодно, но анонимным типом.