您建议在哪里测试验证?
这是来自Yii演示的功能测试:
// test login process, including validation
$this->clickAndWait('link=Login');
$this->assertElementPresent('name=LoginForm[username]');
$this->type('name=LoginForm[username]','demo');
$this->clickAndWait("//input[@value='Login']");
$this->assertTextPresent('Password cannot be blank.');
但针对每个错误案例的验证测试(例如“密码太长”或“电子邮件不正确”)将花费大量时间。那么,为什么不在单元测试中测试验证呢?
答案 0 :(得分:2)
我通常提供一个或两个场景来显示用户如何看待帮助以进行验证,但我通常会将它们放在更高级别,例如:
Given Fred forgets to fill in his phone and email
When he tries to register
Then he should be told what's missing.
这些步骤可以翻译为simple code DSL,也可以添加到Cucumber等工具中(参见BDD)。验证方案(功能)足以举例说明系统的功能。
有效和无效的例子然后按照你的建议进入单元测试。
如果您将功能场景视为展示系统的功能,并将单元测试视为展示类的功能或更细粒度的代码元素,则更容易实现分离。请注意,我在这里避免使用单词“test”作为动词,因为即使在单元级别它仍然只是示例。
答案 1 :(得分:1)
当然,这是你的项目,你可以在你想要的地方测试你想要的东西。
我通常在模型单元测试中测试整个验证。之后,我在网络测试期间再次测试它(但不太广泛)(这是为了测试控制器是否正在解析正确的变量等)。