spec/rails_helper.rb与spec/spec_helper.rb的不同之处是什么?我需要它吗?

use*_*583 83 testing rspec ruby-on-rails rspec-rails rspec3

我是第二次做Rails教程.当我进入这个

rails generate integration_test static_pages
Run Code Online (Sandbox Code Playgroud)

我得到的spec/rails_helper.rbspec/spec_helper.rb,而不是仅仅spec/spec_helper.rb

现在,当我运行我的测试时,它们比我上次这样做时更长(更"冗长")并且更慢.我想知道两个文件之间有什么区别,如果我做错了什么.另外,有没有办法摆脱rails_helper.rb文件而不搞乱一切?

Dav*_*uth 119

rspec-rails 3生成spec_helper.rbrails_helper.rb.spec_helper.rb用于不依赖于Rails的规范(例如lib目录中的类的规范).rails_helper.rb适用于依赖于Rails的规范(在Rails项目中,大部分或全部).rails_helper.rb需要spec_helper.rb.所以不,不要摆脱rails_helper.rb; spec_helper.rb在你的规格中要求它(而不是它).

如果你希望你的非依赖于Rails的规范强制它们不依赖于Rails,并且当你自己运行它们时尽可能快地运行,你可能需要spec_helper.rb而不是rails_helper.rb那些.但是-r rails_helper在你的.rspec每个spec文件中使用一个助手或另一个帮助器非常方便,所以这肯定是一种流行的方法.

如果你正在使用spring预加载器,那么每个类只需要加载一次,并且spring会急切地加载类,即使你只运行一个需要的规范spec_helper,所以只需要spec_helper在某些文件中没有那么多的值.

资料来源:https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files

  • 对于开始使用 rspec 的人来说,这是一团糟! (4认同)
  • 这非常令人困惑.我要添加一个公关来更新rspec-rails自述文件以便拼出来,就像你在这里一样.感谢您的解释. (3认同)