Модульные тесты для MVC3 AsyncController - PullRequest
2 голосов
/ 12 ноября 2011

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

Assert.IsInstanceOfType(result,typeof(JsonResult));

Однако при тестировании методов асинхронного контроллера я смог только утверждать, что тип, возвращаемыйAsyncManager является правильным типом:

var result = controller.AsyncManager.Parameters["articles"];
// Assertions
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result,typeof(IEnumerable<NewsArticle>));

Мне кажется, я должен проверить тип возврата метода Completed, который в моем случае является JsonResult:

public JsonResult GetPublishedNewsArticlesCompleted(IEnumerable<NewsArticle> articles)
{
    return Json(articles, JsonRequestBehavior.AllowGet);
}

Но у меня естьне смог понять, как это сделать.Я прочитал пост Дино Эспозито , в котором он сказал, что «код xxxCompleted тривиален и, вероятно, даже не нуждается в тесте».Я не покупаю это.Метод Completed и его тип возврата - это то, что меня больше всего волнует в этом тесте.

Итак, мой вопрос: как мне проверить, что мой метод Completed фактически возвращает мне JsonResult?Или Дино прав, и мне все равно?

Спасибо.

1 Ответ

0 голосов
/ 26 января 2012

То, что я сделал с моими асинхронными методами, это просто протестировал метод Async, а не метод Completed. Мое решение сделать это основано на том факте, что в методе Completed отсутствует бизнес-логика. Все, что он делает, это сериализует мой возвращаемый объект и передает его обратно как Json или Jsonp, если он междоменный. Я не писал это, и большинство людей скажет вам, если вы не пишете это, не проверяйте это.

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