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
か? - もっと一般的なコントローラ アクション テストを行う必要がありますか?