我正在寻找关于人们如何组织他们的控制器测试的整洁建议。你如何组织你的MVC控制器测试?
例如,把我的“地址”控制器的“添加”功能,
[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"
and "When_adding_an_address_POST"
?
事情似乎越来越乱,很快。
另外,你如何处理控制器的无状态/ setupless断言,以及你如何安排这些与上述?例如:
[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()
。
欢迎任何提示!
谢谢