私はNewsControllerというコントローラを持っています。このコントローラのコンストラクタはINewsServiceをパラメータとして受け取ります。サービス層と呼ばれるアクションメソッドがあるかどうかをチェックするユニットテスト
このコントローラには、GetUIllNews()というメソッドがあり、これはYUIデータテーブルにデータを取り込むために使用するJSON結果を返します。私はニュースサービスのFindAllメソッドがすべてのニュース項目を返すために呼び出されたかどうかをチェックする単体テストを作成したいと思います。どうすればいい?私が現在持っていることです:コントローラ用
public JsonResult GetAllNews()
{
var items = newsService.FindAll();
var jsonResult = Json(items);
return jsonResult;
}
私のユニットテストは、次のようになります。
public NewsControllerTest()
{
newsServiceStub = MockRepository.GenerateStub<INewsService>();
newsController = new NewsController(newsServiceStub);
}
[Test]
public void GetAllNews_should_use_news_service()
{
// Arrange
List<News> newsList = new List<News>();
newsServiceStub.Stub(s => s.FindAll()).Return(newsList);
// Act
var actual = newsController.GetAllNews();
// Assert
newsServiceStub.VerifyAllExpectations();
}
テストは、上記のコードを渡します。しかし、GetAllNews()を以下のように変更すると、それも渡されます。それは失敗してはいけませんか?
public JsonResult GetAllNews()
{
return null;
}
なぜこれを有用なテストと見なしますか? – bzlm
@bzim:私は初心者で、まだ学んでいます。何をテストするのか、どうしたらいいのか分からない。 –