我偶然发现了 Luke Redpath 的一篇旧文章,其中介绍了一个非常简单的 BDD 示例(即使对于像我这样的非 Ruby 程序员来说也非常简短且易于理解)。我发现最终结果非常不完整,因此使示例变得毫无用处。
最终结果是验证具有预设属性的用户是否有效的单个测试。在我看来,这根本不足以正确验证验证规则。例如,如果您更改
validates_length_of :password, :in => 6..12, :allow_nil => :true
至
validates_length_of :password, :in => 7..8, :allow_nil => :true
(甚至完全删除密码长度验证)测试仍然会通过,但您显然可以看到代码现在违反了初始要求。
我只是认为将所有单独的测试放在一个单独的测试中的最后一次重构是不够的。他只测试不能保证太多的“快乐路径”。我绝对会有所有的测试来验证正确的错误是由某些值触发的。在密码的情况下,我会测试长度小于 6 且大于 12 的密码无效并触发相应的错误。“幸福路径”测试也将在那里,但并不像文章中那样单独存在。
你怎么看?我只是想弄清楚为什么这个人会这样做,以及他是否只是忽略了问题或者这是他的意图。我可能会遗漏一些东西。