2010-03-04 3 views
5

Я все еще выясняю несколько тонких точек вокруг модуля, тестирующего приложение ASP.Net MVC2 с помощью NUnit.Как вы тестируете свои действия ASP.Net MVC JsonResult?

В целом, тестирование моих ActionResults, моделей, репозиториев и т. П. Прямолинейно, но мне не пришлось тестировать методы Ajax раньше, и мне хотелось бы получить некоторые рекомендации о том, как мне лучше всего это делать.

Заранее спасибо.

ответ

6

Тестирование действия контроллера, возвращающего JsonResult, не должно отличаться от проверки других действий. Рассмотрим следующий сценарий:

public class MyModel 
{ 
    public string Name { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Json(new MyModel { Name = "Hello World" }); 
    } 
} 

И модульный тест (жаль, что MSTest, я не NUnit атм, но это должно быть довольно Пролив вперед):

// arrange 
var sut = new HomeController(); 

// act 
var actual = sut.Index(); 

// assert 
Assert.IsInstanceOfType(actual, typeof(JsonResult)); 
var jsonResult = (JsonResult)actual; 
Assert.IsInstanceOfType(jsonResult.Data, typeof(MyModel)); 
var model = (MyModel)jsonResult.Data; 
Assert.AreEqual("Hello World", model.Name); 
+1

Почему вы утверждаете IsInstanceOfType? если это не тип, в любом случае будет выбрано исключение. – gdoron

0

IMO, лучше не тестировать свои методы Ajax (я имею в виду клиентские, контроллеры на сервере, которые вы можете легко протестировать), но для проверки пользовательского интерфейса клиента. Чтобы проверить пользовательский интерфейс, я рекомендую вам использовать Selenium RC или WatiN.

Смежные вопросы