0

目前正在开发一个 MVC 应用程序,该应用程序有一个包含 12-14 个字段的注册表单,用户必须填写这些字段才能注册到我们的站点。关于用户输入有两个要求,令人惊讶的是,他提供了一个唯一的电子邮件和一个唯一的用户名,这些在我们的数据库中仍然不存在。我已经对这些验证进行了测试,其余的用户输入正确性留给模型中的验证符号,例如日期格式和密码强度要求等,如下所示:

[Required(ErrorMessage = "Your password is required")]
[StringLength(20, MinimumLength = 8, ErrorMessage = "Must be between 8 and 20                                                           characters")]
[RegularExpression(@"(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[0-9a-zA-Z!@#$%^&*()]*$", ErrorMessage = "Needs to have lowercase, uppercase and a number")]
[Display(Name = "Password")]
public string Password { get; set; }

如果不测试这些符号,我想我需要写的关于这个逻辑的唯一测试是那些关于验证用户名和电子邮件唯一性以及向数据库添加记录的测试,我已经拥有了,但我担心只有 3 个测试可能太少了。虽然我认为(并且希望,老实说)我不需要对开箱即用的符号验证进行测试,但我想从更有经验和不那么懒惰的人那里听到这一点:) 另外,如果你能指出关于用户注册时还应该测试什么的一些一般规则,那就太好了。

4

2 回答 2

1

如果有一天你决定重写这个RegularExpression类,你就会知道你的测试是否失败。由您决定在哪里画线。我会说这是一个小小的努力。

于 2013-06-24T13:34:10.533 回答
1

首先,不要仅仅为了编写单元测试而编写单元测试。通常情况下,它们最终没有用,也没有真正证明任何东西。

这些是我通常会为其编写测试的东西。

  • 业务需求。企业已经要求这些,所以你最好确保它们能正常工作。
  • 正常流量/使用。一般测试证明它的行为方式是你想要的。
  • 边缘案例。它们可能不会经常发生,但可以通过测试来覆盖它。
  • 错误。需要证明坏男孩是历史。
  • 培根。总是测试培根。
于 2013-06-24T15:10:38.327 回答