在Rails中测试模型的最佳实践是什么?

时间:2011-05-01 01:25:54

标签: ruby-on-rails ruby testing activerecord model

一个测试模型应该在轨道上多少或多少?由于框架基本上是为你做了这么多,我想知道是否值得测试生成的activerecord方法,以确保它们工作与否。

你们通过控制器隐含地测试它们吗?

在Java世界中,如果我使用Hibernate,我必须编写这么多ORM映射的东西,测试每个实体的save / delete / find非常重要 - 即使我只是从基类继承这些方法 - 因为它很容易使得映射信息错误,或者犯了一个愚蠢的错误。删除很重要,以确保Hibernate正确级联。

但是因为你根本没有在rails中配置任何这些东西......它就是这么简单......它值得测试,还是只是假设它有效?您是否仅限于确保协会按预期工作?

最佳做法是什么?有什么好的测试例吗?我在这里找到了一个页面: http://guides.rubyonrails.org/testing.html

但它没有具体谈论ActiveRecord。它更多地关注控制器和其他东西。

谢谢!

2 个答案:

答案 0 :(得分:6)

我不会尝试测试活动记录等引入的任何方法。它们已经由rails团队测试过。他们已经编写了测试用例。

但我会测试我的所有方法,基本上是我在模型中编写的任何自定义代码。首先将它们作为单独的单元进行测试,我将使用单元测试。为了确保整个工作正常(模型控制器......等),您可以使用集成测试。

导轨对您来说是一个非常好的起点。之后你可以挖掘更多有趣的东西。我建议你看看和rspec和黄瓜。

对您有帮助的更多stackoverflow问题(和答案)

答案 1 :(得分:5)

不,测试活动记录不是一个好主意,它已经过非常广泛的测试,所以你只会浪费你的时间。

你应该测试你写的任何东西。应该测试您编码的任何模型方法。也就是说,不要测试Active Record删除方法是否有效,但如果您的流程实现有效(例如,如果用户单击删除并且他有项目,则会被删除)。测试行为,而不是测试行为。

使用rspec查看测试控制器的非常好的演员:

http://railscasts.com/episodes/71-testing-controllers-with-rspec

您提到的资源可能也是最好的:)如果您对rspec感兴趣,可以在这里找到一些非常好的信息:

http://rspec.info/