2011-11-11 38 views
2

我已閱讀了有關此主題的幾篇文章,但都沒有直接解決我的問題。當您測試同步控制器的方法,你可以斷言,該方法返回你所期望的類型:單元測試MVC3 AsyncController

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

然而,測試異步控制器方法時,我只能夠斷言,由AsyncManager返回的類型是正確的類型:

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

在我看來,我應該測試的完成方法的返回類型的在我的情況是JsonResult:

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

但我一直無法弄清楚如何做到這一點。我讀了Dino Esposito的一篇文章,他在其中說:「xxxCompleted的代碼是微不足道的,可能甚至不需要測試」。我不買它。 Completed方法和返回類型是我在這個測試中最關心的。

所以我的問題是我怎麼測試我的完整的方法實際上是給我回了JsonResult?還是迪諾是正確的,我只是不應該在意?

謝謝。

回答

0

我已經與我的異步方法做的是剛剛測試異步方法,而不是完整的方法。我的決定是基於Completed方法中沒有業務邏輯的事實。它所做的就是序列化我的返回對象,並將其作爲Json或Jsonp傳回,如果它是跨域的話。我沒有寫,大多數人會告訴你,如果你不寫,不要測試它。