0

我们的项目已经变得太大而无法手动测试,因此我们开始使用单元测试来覆盖它。现在我们面临着测试模型验证过程的困境。

一方面,验证是模型逻辑的一部分,因此需要对其进行测试,因此我们开始进行繁琐的测试,如下所示:

public function testNameRequired()
{
    $this->object->name = '';
    $this->assertFalse($this->object->validate(array('name')));

    $this->object->name = 'Franky';
    $this->assertTrue($this->object->validate(array('name')));
}

但另一方面,验证器(我的意思是内置)是框架的一部分并且已经过测试,所以我们基本上是在测试静态rules数组(跟踪意外代码修改是 VCS 的任务)。

我们也在考虑创建某种可重用的验证器测试,它会接受rules数组,解析它并运行上面的测试,但它只是重写框架测试。

所以问题是:

您是否在代码中测试验证?如果你这样做,那怎么办?

4

1 回答 1

3

我认为您忽略了测试的想法:您不一定要测试验证代码是否有效,而是您的验证逻辑是否有效。

我建议您仍然进行所有测试,原因有两个:

  • 万一你忘记验证某事,你可能会记得验证它并发现你的错误在哪里。
  • 测试还有另一个目的:允许轻松重构。可能是您或其他最终使用您的代码的程序员将决定对其进行编辑。如果测试已经到位,则很容易确保新版本可以正常工作。也不要假设 Yii 的开发人员不会犯错误 ;) 他们也只是人类——这取决于你对他人的信任程度。

如果您决定测试您的验证,我不会依赖使用rules()'s 的输出 - 这应该是您正在测试的事情之一。

于 2012-08-15T08:28:43.057 回答