Код находится в ASP.NET Core. Контроллер MVC возвращает Json (someData). Я пытаюсь получить данные в тесте Unit. Лучшее, что я могу сделать, это иметьПолучить данные от JsonResult
string data = JsonConvert.SerializeObject(jsonResult.Value);
, а затем сравнить строку. Но я бы предпочел, чтобы объект или массив могли выполнять некоторые более конкретные сравнения. Интересно, что в отладчике я вижу, что jsonResult.Value
имеет тип Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable<MyType>
, и даже есть представление результатов, которое предупреждает не расширять его; и если я его расширю, я получаю именно то, что хочу! В моем случае это 4-элементный массив из MyType
объектов. Однако, если я что-то вроде from i in jsonResult.Value select i
я получаю сообщение об ошибке
Could not find an implementation of the query pattern for source type 'object'.
'Select' not found
Я надеюсь, что это лучший способ, чем сравнение строки JSON!
Он не находит Cast ... – Felix
Я думаю, вам просто нужно бросить jsonresult.Value. Попробуйте из i in ((IQueryable < MyType >) js.Value) выберите i – Paresh
Удивительный! Я пробовал 'js.Value как IQueryable' и он не работал; но почему-то не попробовал '(IQueryable ) js.Value'. Не возражаете, обновляя свой ответ, поэтому я могу принять его! Большое спасибо –
Felix