Как мне проверить ASP.Net MVC View? - PullRequest
4 голосов
/ 09 июня 2009

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

Мой план - написать тест, который сначала вызывает контроллер, а затем вызывает метод ActionResult, который я планирую протестировать. Я думал, что смогу написать что-то вроде

Controller controller = new HomeController();
var actionresult = controller.Index();
Assert.False(actionresult.ToString(), String.Empty);

, что позволило бы мне проанализировать результат действия для тестового значения. Однако я не могу напрямую создать экземпляр метода public ActionResult Index().

Как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 09 июня 2009

Помощники по тестированию в MVCContrib помогут вам здесь.

ViewResult result = controller.Index().AssertViewRendered().ForView("Blah");
1 голос
/ 09 июня 2009

Вот пример из Professional ASP.NET MVC 1.0 (книга):


[TestMethod]
public void AboutReturnsAboutView()
{
     HomeController controller = new HomeController();
     ViewResult result = controller.About() as ViewResult;

     Assert.AreEqual("About", result.ViewName);
}

Обратите внимание, что это не удастся, если вы не вернете явное представление в методе контроллера, то есть сделайте следующее:


     Return(View("About"));

не это:


     Return(View());

Или тест не пройдет. Это нужно делать только в том случае, если ваш метод когда-либо вернет более одного представления, в противном случае вам все равно следует возвращать неявное представление и не беспокоиться о тестировании инфраструктуры.

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