「退屈するまでテストする」
そうは言っても、統合テストを介してほとんどのテストを実行することには注意してください。つまり、一度に1つのことをテストします。例えば。あなたはテストに興味があるかもしれません
- コントローラロジック
- ルーティングロジック
- データベース
- 読み込み方法
- ビュー
ただし、同じテストで2つ以上をテストしないでください。したがって、コントローラーロジックをテストする場合は、使用されているデータオブジェクトを渡すか、モックアウトしてください。
そうは言っても、これらのパーツをテストする「方法」にも興味があるかもしれません。以下の3つの部分(データベース、読み込み関数、ビュー)について説明します。
データベース
データベースでテストする必要があるのは、実際には2つだけです。
- 接続されていますか?
- スキーマは正しいですか
接続の場合、エコーテストが好きです
Assert.AreEqual(42, QuerySingleResult("Select 42"));
データベースのメタデータをテストする方法はたくさんありますが、保存されているバージョン番号がある場合は、それをテストするだけで済みます。これにより、パスのアップグレードも簡単になります。
Assert.AreEqual(6, QuerySingleResult("Select version From Schema"));
読み込み機能
読み込み関数をテストする方法はたくさんありますが(ここでは簡単な方法を示します)、それらはすべて、読み込みを関数に分離することに依存しています。
linqをテストしています...
var people = From db in new EntityFrameworkContext().People Where ...... Select ....
これを2つの機能に分割すると
IEnumerable<People> LoadPeople()
{
return LoadPeople( new EntityFrameworkContext().People);
}
IEnumerable<People> LoadPeople(IEnumerable<People> fromPeople)
{
return From db in fromPeople Where ...... Select ....
}
これで簡単にテストできます。
ビュー
ビューは簡単にテストできますが、詳細はたくさんあります。すべてのビデオを紹介します:http ://www.youtube.com/watch?v = SttlPzwJw3U
しかし、2つの重要な部分は
1)テスト
MvcApprovals.VerifyMvcPage(new YourController().YourTestAction
2)コントローラーのテストシーム
public ActionResult YourTestAction()
{
// setup your model
return View("viewpage", model);
}
ハッピーテスト!