Мне нужно написать единичный тест, тестирующий контроллер, который, как представляется, возвращает JSON как анонимный тип.Единичные тесты с анонимными типами - JSON
Единственная причина, это анонимно, потому что мне нужно добавить корневой узел к нему, так что отдача от контроллера выглядит следующим образом:
return Json(new { User = person });
Это добавляет корневой узел в формате JSON с «User », а затем объект Person
, сериализованный в JSON.
Это прекрасно работает, моя проблема заключается в модульном тестировании.
Единственное решение, которое я видел для тестирования анонимных типов, как это, заключается в том, чтобы сначала создать тестовый проект, используя InternalsVisibleTo
в AssemblyInfo.cs, а затем используя dynamic
, чтобы получить результаты.
dynamic results = userController.GetPerson(1);
dynamic content = results.Content;
Это не будет работать на второй линии, говоря, что object
не имеет содержимого свойства. Однако под отладчиком отображается свойство Content.
Как я могу проверить это?
Результаты. Действительный. Я вижу его в отладчике Visual Studio и содержит действительный объект, и свойства установлены. Я не могу понять, почему он утверждает, что 'object' не содержит свойства Content, когда мы имеем дело с объектом' dynamic' здесь, но если я посмотрю на объект в отладчике Visual Studio и расширю ' Content', это все допустимо. – Patrick
вы можете создать экземпляр динамического объекта до вызова GetPerson, как это делается здесь http://stackoverflow.com/questions/2630370/c-sharp-dynamic-cannot-access-properties-from-anonymous-types-declared-in -anot –