spec/rails_helper.Rb与spec/spec_helper.rb不同?我需要它吗?



我是第二次做Rails教程。当我输入

rails generate integration_test static_pages

得到spec/rails_helper.rbspec/spec_helper.rb而不是spec/spec_helper.rb

现在,当我运行我的测试时,它们比上次运行时更长(更"冗长")和更慢。我想知道这两个文件的区别是什么,如果我做错了什么。此外,有没有一种方法来摆脱rails_helper.rb文件没有搞乱一切?

respect -rails 3生成spec_helper.rbrails_helper.rbspec_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。但是在.rspec中设置-r rails_helper非常方便,而不是在每个规范文件中要求一个或另一个帮助器,因此这肯定是一种流行的方法。

如果您使用spring预加载器,每个类只需要加载一次,并且即使您只运行需要spec_helper的单个规范,spring也会主动加载类,因此在某些文件中只需要spec_helper并没有多大价值。

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

您总是可以将所有配置组合到spec_helper中,并且只需要在rails helper文件中使用spec helper。

这绝不是"理想的",因为在一天结束的时候,你手工做这个"重构",但如果它真的困扰你。要知道,这完全取决于你如何构建Rspec.configure

#rails_helper.rb
require 'spec_helper'
#EMPTY FILE
在 中引入所有rails的设置
# spec_helper.rb
# This file is copied to spec/ when you run 'rails generate rspec:install'
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)
# Prevent database truncation if the environment is production
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
# Add additional requires below this line. Rails is not loaded until this point!
# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
# run as spec files by default. This means that files in spec/support that end
# in _spec.rb will both be required and run as specs, causing the specs to be
# run twice. It is recommended that you do not name files matching this glob to
# end with _spec.rb. You can configure this pattern with the --pattern
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
#
# The following line is provided for convenience purposes. It has the downside
# of increasing the boot-up time by auto-requiring all files in the support
# directory. Alternatively, in the individual `*_spec.rb` files, manually
# require only the support files necessary.
#
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
# Checks for pending migrations and applies them before tests are run.
# If you are not using ActiveRecord, you can remove these lines.
begin
  ActiveRecord::Migration.maintain_test_schema!
rescue ActiveRecord::PendingMigrationError => e
  puts e.to_s.strip
  exit 1
end
RSpec.configure do |config|
... all our config.whatever_your_heart_desires

相关内容

  • 没有找到相关文章

最新更新