Ich suche nach ordentlichen Vorschlägen, wie die Leute ihre Controller-Tests organisieren.Wie organisieren Sie Ihre MVC-Controller-Tests?
Nehmen wir zum Beispiel die „add“ Funktionalität meiner „Adresse“ Controller,
[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
}
ich eine Befestigung "when_adding_an_address"
genannt haben könnte, aber es gibt zwei Aktionen i unter diesem Titel zu testen, müssen ...
Ich möchte nicht beide Aktionen in meiner Act()
Methode in meiner Fixture aufrufen, also teile ich die Fixture in zwei Hälften, aber wie nenne ich sie dann?
"When_adding_an_address_GET"
und "When_adding_an_address_POST"
?
Dinge scheint einfach nur chaotisch zu werden, schnell.
Wie gehen Sie auch mit Stateless/Setupless Assertions für Controller, und wie ordnen Sie diese in Bezug auf die oben genannten? zum Beispiel:
[Test]
public void the_requesting_user_must_have_write_permissions_to_POST()
{
Assert.IsTrue(this.SubjectUnderTest.ActionIsProtectedByRole(c => c.Add(null), Role.Write));
}
Dies ist i benutzerdefinierter Code kennen, aber man sollte auf die Idee kommen, überprüft es einfach, dass ein Filter-Attribut für das Verfahren vorhanden ist. Der Punkt ist es erfordert keine Arrange()
oder Act()
.
Alle Tipps willkommen!
Danke