在“测试”模式下处理数据库数据的最佳做法是什么?

时间:2012-03-19 11:28:53

标签: ruby-on-rails ruby database ruby-on-rails-3 testing

我正在使用Ruby on Rails 3.2.2,cucumber-rails-1.3.0,rspec-rails-2.8.1和capybara-1.1.2。我有this problem但我开始认为我可能做错了...主要是为了测试目的而在test数据库中播种数据。具体来说,我的问题与如何在我必须测试我的应用程序时正确管理test数据库中的数据有关。

我的疑问是:通过播种数据 For Your Information :我使用ROOT_PATH/db/seed.rb文件注入该数据)在{{ 1}}数据库我正在做他们应该做的事情?也就是说,我应该如何填充test数据库,因为该数据库*中的数据是必需的为了测试目的,我的应用程序是否正常工作?我应该填充test数据库吗?

换句话说,test模式下处理数据库数据的最佳做法是什么(在我的情况下)而且,一般来说,情况如何应该处理?

*****例如,为了工作,我的应用程序至少需要与“匿名”用户,“基本”文章,“基本”文章类别等相关的数据。

2 个答案:

答案 0 :(得分:1)

您应该使用以下其中一项:

  1. 灯具。请参阅相应的Rails documentation
  2. 工厂。创建/管理工厂最受欢迎的工具是FactoryGirl。恕我直言,这是最好的解决方案。
  3. 确保将数据播种到测试数据库中。请参阅this StackOverflow问题。

答案 1 :(得分:0)

我有类似的问题,关联使得有必要获得一些种子数据:

  • 工厂会使你的测试真的很慢,对于单个对象来说它们是完全正常的,但对于每个测试必须创建的大量种子数据都不行

  • Fixture Builder - http://github.com/rdy/fixture_builder 我创建了一堆灯具,只是在每个测试中从DB加载它们,将我的测试时间缩短了40%。您也可以加载种子文件。 但要小心,删除或更新记录会产生不必要的副作用。使用工厂制作这些规格。

  • 模拟和存根所有内容,以便您的测试很少接触数据库。 这已经变得非常不受欢迎,你最终会得到那些没有发现实际错误的规格。