Как я могу получить индекс ViewResult? - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь создать модульный тест, в котором я могу проверить выбранный запрос. Я создал поддельную базу данных и добавил в нее адрес электронной почты и имя пользователя. Я не могу получить доступ к свойству электронной почты ViewResult

При попытке использовать индекс для ViewResult я получаю сообщение об ошибке

не может применить индексирование с [] к выражению типа 'object'

Действие, которое захватывает эту информацию, является правильным, и я могу проверить это с помощью отладчика в Visual Studio 2015. Мне возвращается ActionResult, который я затем узнал, что мне пришлось преобразовать его в ViewResult.

Внутри отладчика я вижу

ReturnResult -> Модель -> [0] -> Электронная почта

        var fakeDb = new FakeApplicationDbContext();
        fakeDb.FoundInformation = new FakeDbSet<FoundInformation>();
        var foundInformation = new FoundInformation { Email = "Test@Email.com", Username = "User1" };
        var foundInformation2 = new FoundInformation { Email = "Test2@Email.com", Username = "User2" };
        fakeDb.FoundInformation.Add(foundInformation);
        fakeDb.FoundInformation.Add(foundInformation2);


        FoundInformationController foundInformationController = new FoundInformationController(fakeDb);
        var returnedResult = (ViewResult)foundInformationController.Details(new 
            Search { SearchTerm = "User2" });
        var foundInfoEmail = returnedResult.Model[0].Email;

У меня ошибка в строке

var foundInfoEmail = returnedResult.Model[0].Email;

Как бы я взял этот Email, чтобы утверждать, что он правильный?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вам необходимо привести Model к нужному типу и получить доступ к этому свойству электронной почты.

, например, если вы возвращаете List или массив объектов в вашем просмотре деталей.

Вы можете получить доступ к этомусвойство как

var returnedResult = (ViewResult)foundInformationController.Details(new 
        Search { SearchTerm = "User2" });
// if you return List then use like below and if you return an array then cast into array rather then list.
var model = returnResult.Model as List<Type of object Your return in Result> ;
var foundInfoEmail = model[0].Email;
0 голосов
/ 01 апреля 2019

У вас есть попытка returnResult.Model.ToList () [0] .Email?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...