2011-11-11 10 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メソッドと戻り値の型は、このテストで最も気にしているものです。

私の質問は、Completedメソッドが実際に私にJsonResultを返す方法をテストすることです。それともディーノの権利ですか私は気にしないでください?

ありがとうございました。

答えて

0

私が非同期メソッドで行ったことは、Asyncメソッドをテストし、Completedメソッドをテストすることではありません。これを行うための私の決定は、Completedメソッドにビジネスロジックがないという事実に基づいています。それが行うのは、返品オブジェクトをシリアライズし、クロスドメインの場合はJsonまたはJsonpのように戻します。私はそれを書いていないし、あなたがそれを書いていなければほとんどの人々はあなたに言うだろう、それをテストしないでください。