2009-02-12 43 views

回答

14

验证本身应该是可信的,但你可能要检查确认是否存在。换句话说,测试某件东西的好方法就好像它是一个黑盒子,从实现中抽象出测试,例如,您可能有一个测试来检查人员模型不能保存没有名字,但不关心Person类如何执行验证。

4

这应该足以接受库如ActiveRecord的是由开发人员更好地测试比以往任何时候都将是你对他们来说这是一个首要关注的问题,因为你是在最好的切线。

这并不是说没有错误 - 很久以前我发现了一个很小的MS SQL Server适配器 - 但是您可能正在执行的测试类型不太可能将它们暴露为他们很可能是边缘情况。如果你找到一个bug,当然,如果你用暴露它的测试用例报告它可能是非常有用的!

我只测试ActiveRecord的内部,如果我正在寻求更好地了解一个特定的方面,该库实现。我不会在任何应用程序项目中包含这些探索性测试,因为它们与项目无关。

在一般情况下,你应该写的代码,你自己写的测试:如果你住或尝试生活在一个TDD的世界,测试前应写。如果您的模型具有验证规则,那么您几乎肯定应该编写测试以确保规则存在。在大多数情况下,测试将是微不足道的,但是如果一个不慎线被删除在未来一段时间会真的有用...

3

由于迈克写道,起码你应该测试验证存在。这只是一个简单的复式会计(完整性检查)。

根据具体情况,您还应该测试您的模型在特定情况下是否有效或无效。例如,如果您的字段需要特定的格式,则测试有效的格式和不格式的格式。这是很容易看到这意味着什么在你的测试读了几个例子:

class Person < ActiveRecord::Base 
    validates_format_of :email, 
     :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i 
end 

是的,验证很好测试和足够可靠的。但是,您正确使用验证是您想验证的内容。

0

作为一个附注,Ryan Bigg的博文has_and_belongs_to_many double insert提到有人在ActiveRecord中遇到一个错误(不过与验证无关)。正如他指出的那样,不要认为Rails不可能有错误,因为我们知道Rails有900个开放门票。

但是,是的,你写一个测试的主要原因是检查你的ActiveRecord的使用是正确的。