【问题标题】:Unit Tests for MVC3 AsyncControllerMVC3 AsyncController 的单元测试
【发布时间】:2011-11-11 22:43:19
【问题描述】:

我已经阅读了几篇关于这个主题的帖子,但都没有直接解决我的问题。当您测试同步控制器方法时,您可以断言该方法正在返回您期望的类型:

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);
}

但我无法弄清楚如何做到这一点。我读了Dino Esposito 的帖子,他说“xxxCompleted 的代码很简单,甚至可能不需要测试”。我不买它。 Completed 方法和它的返回类型是我在这个测试中最关心的。

所以我的问题是如何测试我的 Completed 方法实际上是否给了我一个 JsonResult?还是 Dino 是对的,我不应该在意?

谢谢。

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    我对异步方法所做的只是测试 Async 方法而不是 Completed 方法。我这样做的决定是基于 Completed 方法中没有业务逻辑这一事实。它所做的只是序列化我的返回对象,如果它是跨域的,则将其作为 Json 或 Jsonp 传回。我没有写它,大多数人会告诉你,如果你不写它,不要测试它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多