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

5
在Rails中,我们应该测试多少或者测试多少模型?由于这个框架已经为你做了很多事情,我想知道测试生成的ActiveRecord方法是否值得去验证其功能。
你们是通过控制器隐式地测试它们吗?
在Java世界中,如果我使用Hibernate,我必须写很多ORM映射代码,测试每个实体的保存/删除/查找非常重要,即使我只是从基类继承了这些方法,因为很容易出现映射信息错误或者犯一个愚蠢的错误。删除操作的测试也很重要,以确保Hibernate可以正确级联。
但是,在Rails中你不需要配置任何东西...一切都是如此简单...它值得测试吗?还是你只是假定它能正常工作?你只限于确保关联按预期工作吗?
什么是最佳实践?有什么好的测试示例吗?我在这里找到了一个页面: http://guides.rubyonrails.org/testing.html 但它没有具体讨论ActiveRecord。它更注重控制器和其他内容。
谢谢!
2个回答

7

我不会试图测试由Active Record等引入的任何方法。它们已经由Rails团队进行了测试,并且已经编写了测试用例。

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

Rails指南可能是一个非常好的起点。之后,您可以深入到更有趣的东西。我建议您查看RSpec和Cucumber。

还有一些stackoverflow问题(和答案),对您很有帮助


谢谢!我对测试很熟悉 - 只是在过去几年中,我可能已经写了10,000个测试 ;) 我只是新接触 Ruby 和 Rails。很多地方都专注于使用框架进行开发,但对测试实践的关注不够。我一定会继续阅读的。也许我能找到一个好的 Rails 应用程序,下载下来看看他们的测试。 - egervari
为什么不直接看看Rails本身呢?;) - thekindofme
哦,我不是说我不知道如何进行一般的测试,我的意思是什么是有意义的,什么是没有的。在Java世界中,测试保存/删除/查找实际上非常有意义和宝贵,因为如果您不测试,可能会导致错误...但我猜在Rails中不是这样。此外,测试控制器可能具有与Spring MVC非常不同的细微差别-即使概念是相同的。这只是学习差异真正的方法。但在进入控制器之前,我想先使用模型工作。 - egervari

5
不,测试Active Record并不是一个好主意,因为它已经经过了广泛的测试,你只会浪费时间。你应该测试你自己编写的任何模型方法。也就是说,不要测试Active Record删除方法是否有效,而是测试你的实现是否有效(例如,如果用户点击删除并且他有这个项目,它将被删除)。测试行为,而不是执行方式。可以看一下这个非常好的使用rspec测试控制器的视频教程:http://railscasts.com/episodes/71-testing-controllers-with-rspec。你提到的资源可能也是最好的 :) 如果你对rspec感兴趣,你会在这里找到一些非常好的信息:http://rspec.info/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接