Трудность начать с базового модульного теста (пример из моей книги - SportsStore) - PullRequest
5 голосов
/ 29 апреля 2010

Я действительно новичок в TDD и, на самом деле, я пытаюсь следовать примеру из моей книги ( SportsStore - Pro ASP.NET MVC Framework / Стив Сандерсон / APRESS ). Я на страницах 103-105.

Несмотря на то, что есть еще что-то, что является новым для всего этого, я обеспокоен следующими утверждениями.

ProductsController controller = new ProductsController(repository);
var result = controller.List(2);
     //...

относительно приведенных выше утверждений, когда я пишу это (как в книге),

var products = result.ViewData.Model as IList<Product>;

Я получаю ошибку компилятора " System.Web.MVC.ActionResult" не содержит определения для ViewData ..."Но, когда я удаляю List () из утверждение, то ошибка компилятора исчезнет.

var result = controller.List(2);//Doesn't work
var result = controller;//It works

Что-то там не так? Я проверил веб-сайт Apress на наличие этой книги, но там нет ни одной ошибки или проблемы. Так что я действительно потерян.

Спасибо за помощь

Ответы [ 4 ]

8 голосов
/ 29 апреля 2010

Это связано с тем, что actionresult не содержит определения для viewdata, который есть у viewresult, а viewresult на самом деле является actionresult, поэтому вы можете привести его к (ViewResult) и затем получить viewdata

1 голос
/ 30 января 2013

у вас также может отсутствовать библиотека System.Web.Mvc из вашего тестового проекта

1 голос
/ 29 апреля 2010
var products = ((ViewResult)result).ViewData.Model as IList<Product>;
0 голосов
/ 09 января 2011

В качестве альтернативы вы можете изменить код в вашем контроллере продуктов с:

public *Action*Result List()
{
     return View(productsRepository.Products.ToList());
}

до:

public *View*Result List()
{
     return View(productsRepository.Products.ToList());
}

ViewResult является подклассом базового класса ActionResult.

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