1

你建议在哪里测试验证?

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

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

4

2 回答 2

2

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

Given Fred forgets to fill in his phone and email
When he tries to register
Then he should be told what's missing.

这些步骤既可以转换为简单的代码 DSL,也可以添加到Cucumber之类的工具中(请参阅BDD)。验证场景(功能性)足以举例说明系统的功能。

按照您的建议,什么是有效的和无效的示例然后进入单元测试。

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

于 2012-11-08T08:53:59.157 回答
1

当然,这是你的项目,你可以测试你想要的,你想要的。

我通常在我的模型单元测试中测试整个验证。之后,我还在我的网络测试期间再次测试它(但不那么广泛)(这是为了测试控制器是否正在解析正确的变量等......)

于 2012-11-08T08:15:06.867 回答