我有以下控制器:
public ActionResult Login(LoginUseraccount loginUseraccount)
{
try
{
if (ModelState.IsValid)
{
//Do something
return RedirectToAction("Index", "Dashboard");
}
else
{
//Do something
return RedirectHomeIndex;
}
}
catch (UserNotActiveException userNotActiveException)
{
//Do something
return RedirectHomeIndex;
}
catch (Exception exception)
{
//Do something
return RedirectHomeIndex;
}
}
我有三个问题:
1)你会为if-else定义两个测试吗? 第一个测试将测试ModelState.IsValid == true,另一个测试ModelState.IsValid == false?在为模型编写的单元测试中测试它会不会更有意义吗?
2)你会测试UserNotActiveException吗?如果抛出异常由业务逻辑(其他类)决定。因此,在业务逻辑测试中进行此测试更有意义,您同意吗?
3)你会测试异常吗?我认为这没有意义。
我知道没有“正确”或“错误”,但我真的很感激您的反馈。
答案 0 :(得分:1)
在我看来,你应该测试一切。 它不会花费太多的精力和时间,但会为您的代码带来良好的信心。
UserNotActiveException
控制器返回相应的ActionResult
。答案 1 :(得分:0)
我当然会写if / else子句的单元测试。您希望确保测试中涵盖所有逻辑,但应该单独完成,而不是在同一测试中。
至于例外情况,我会再测试一下。您可以使用MvcContrib来帮助您对操作方法进行单元测试,以检查返回的路径或视图,例如RedirectToHomeIndex。我会这样做,因为我确信行动方法符合我的期望。如果任何测试失败,那么我知道用户可能被重定向到不同于我想要的页面。