unit-testing - 在哪里测试验证 - 在单元或功能测试中?

标签 unit-testing testing yii tdd validation

您建议在哪里测试验证?

这是来自 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.');

但是针对每个错误案例(例如“密码太长”或“电子邮件不正确”)的验证测试将花费大量时间。那么,为什么不只在单元测试中测试验证呢?

最佳答案

我通常会提供一个或两个场景来展示用户如何看待验证帮助,但我通常会在更高层次上表述它们,例如:

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)。验证场景(功能性)足以举例说明系统的功能。

然后按照您的建议将有效和无效的示例进行单元测试。

如果您将功能场景视为展示系统的功能,而将单元测试视为展示类或更细粒度代码元素的功能,则更容易进行分离。请注意,我在这里避免将“测试”一词用作动词,因为即使在单元级别,它仍然只是示例。

关于unit-testing - 在哪里测试验证 - 在单元或功能测试中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284366/

相关文章:

unit-testing - 测试驱动开发 - 模拟对象

c# - 在 C# 中模拟 SqlBulkCopy

unit-testing - tox --parallel 命令的 <value> 是什么?

php - yii 中的关系查询

c# - 如何模拟返回接口(interface)列表的方法

php - 使用PHPSpec时如何使用类接口(interface)

python - 将所有测试文件收集到一个文件夹中更好,还是让它们分发到各处更好?

selenium - 标签后的机器人框架输入文本

php - 如果使用 yii2,Google Chrome 中的 Cookie 不会被删除

php - Yii - 无法打开 Yii 2.0 的输入文件 yiic