Indexコントローラーのアクションをテストしようとしています。このアクションは、AutoMapperを使用してドメインCustomerオブジェクトをビュー モデルにマップしますTestCustomerForm。Indexこれは機能しますが、アクションから受け取った結果をテストする最良の方法について心配しています。
コントローラーの index アクションは次のようになります。
public ActionResult Index()
{
TestCustomerForm cust = Mapper.Map<Customer,
TestCustomerForm>(_repository.GetCustomerByLogin(CurrentUserLoginName));
return View(cust);
}
そして、TestMethod次のようになります。
[TestMethod]
public void IndexShouldReturnCustomerWithMachines()
{
// arrange
var customer = SetupCustomerForRepository(); // gets a boiler plate customer
var testController = CreateTestController();
// act
ViewResult result = testController.Index() as ViewResult;
// assert
Assert.AreEqual(customer.MachineList.Count(),
(result.ViewData.Model as TestCustomerForm).MachineList.Count());
}
CreateTestController私が使用する方法では、Rhino.Mocks顧客リポジトリをモックし、顧客を返すように設定しますSetupCustomerForRepository。Indexこのようにして、アクションが を呼び出すと、リポジトリが目的の顧客を返すことがわかります_repository.GetCustomerByLogin(CurrentUserLoginName)。したがって、等しい数を主張することは、を満たすのに十分であると考えていIndexShouldReturnCustomerWithMachinesます。
それはすべて、私が何をテストすべきかについて懸念していると言いました.
- をキャストするのはおこがましいよう
result.ViewData.Model as TestCustomerFormです。これは本当に問題ですか?この場合、私は本当にテスト駆動開発を行っているわけではなく、テストを満たすために特定の実装を当てにしているように見えるため、これは私にとって懸念事項です。 - 正しいマッピングを確認するためのより適切なテストはありますか?
- からマップされた各プロパティをテストする必要があります
TestCustomerFormか? - もっと一般的なコントローラ アクション テストを行う必要がありますか?