Pro ASP.NET MVC Frameworkの最初の7つの章を読んだ後、非常にお勧めします。私の読書を通して、著者 - Steve Sandersonは、いくつかのTDDプラクティスに多く触れられました。今、私の質問は:
スティーブは、コントローラ自身、本書の例に対する彼のユニットテストを実行するために使用:
テストコントローラまたはBusinessModel?
[Test]
public void List_Includes_All_Products_When_Category_IsNull() {
//Arrange:
IProductsRepository repository = MockProductsRepository(
new Product { Name = "First Product", Category= "Cat11"},
new Product { Name = "SecondProduct", Category = "Cat22" }
);
ProductsController controller = new ProductsController(repository);
controller.PageSize = 10;
//Act:
var result = controller.List(null, 1);
//Assert:
Assert.IsNotNull(result, "Didn't render view!");
var model = controller.ViewData.Model as IList<Product>;
Assert.AreEqual(2, model.Count, "Got wrong number of products!");
Assert.AreEqual(model[0].Name, "First Product", "Not the expected first item.");
Assert.AreEqual(model[1].Name, "SecondProduct", "Not the expected second item.");
}
スティーブはこれをテストしている理由を私は理解して、明らかに彼はに対して彼のロジックをチェックする必要があります彼が設定したViewDataフラグは、リストコントローラーのアクションを呼び出す必要があるのですが、私の質問はそれで十分ですか?つまり、最初にモデルオブジェクトをテストしてはいけませんか?スティーブはORMツールとしてLINQ2SQLを使用していますが、LINQ機能の外では何も使用していません。データとLINQの組み込みメソッドを呼び出すだけでデータを選択したり更新することができます。ビジネス検証はありません。私の実際のアプリケーションでは、多くのビジネス検証が必要です。コントローラーレベルでのテストを開始するには十分な(または簡単な)ことでしょう。私はModelクラスを無視しています(なぜなら、良いアイデア)?
あなたのアイデアを待っています!
これは私がやったことです。 Kurtに感謝します。受け入れられる! – Galilyou