人々がコントローラーのテストをどのように編成するかについて、きちんとした提案を探しています。
たとえば、「アドレス」コントローラーの「追加」機能を例にとると、
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
var editAddress = new DTOEditAddress();
editAddress.Address = new Address();
editAddress.Countries = countryService.GetCountries();
return View("Add", editAddress);
}
[RequireRole(Role = Role.Write)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
// save code here
}
というフィクスチャがあるかもしれませんが、"when_adding_an_address"
このタイトルの下でテストする必要があるアクションが 2 つあります...
フィクスチャのメソッドで両方のアクションを呼び出したくないAct()
ので、フィクスチャを半分に分割しましたが、どのように名前を付ければよいでしょうか?
"When_adding_an_address_GET"
そして"When_adding_an_address_POST"
?
物事は急速に乱雑になっているようです。
また、コントローラーのステートレス/セットアップレス アサーションをどのように処理し、これらを上記のようにどのように配置しますか? 例えば:
[Test]
public void the_requesting_user_must_have_write_permissions_to_POST()
{
Assert.IsTrue(this.SubjectUnderTest.ActionIsProtectedByRole(c => c.Add(null), Role.Write));
}
これは私が知っているカスタム コードですが、アイデアを得る必要があります。メソッドにフィルター属性が存在することを確認するだけです。Arrange()
ポイントは、またはを必要としないことAct()
です。
どんなヒントでも大歓迎です!
ありがとう