Я ищу полезные советы о том, как люди организуют свои тесты контроллеров.
Например, возьмите функцию «добавить» моего контроллера «Адрес»,
[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"
, однако есть два действия, которые мне нужно проверить под этим заголовком ...
Я не хочу вызывать оба действия в моем методе 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()
.
Любые советы приветствуются!
Спасибо