Rspec / Capybara Rails在哪里需要' capybara / rails'

时间:2014-07-14 01:04:34

标签: ruby-on-rails rspec capybara

在Rails应用程序中require 'capybara/rails'进入spec / rails_helper.rb吗?还有require 'capybara/rspec'怎么样?它是否符合spec / rspec_helper.rb?而不是spec / rails_helper.rb ......这两个文件的目的是什么?

1 个答案:

答案 0 :(得分:4)

您可以将其添加到 rails_helper.rb 文件的顶部。以下是docs的设置说明。以下是我rails_helper顶部的示例以及我放置require 'capybara/rspec'的位置。

该文件的目的是加载您使用特定配置运行的每个测试。因此,您将行require 'rails_helper'添加到每个测试文件的顶部,如下所示:

require 'rails_helper'

RSpec.describe MyModel, :type => :model do
  # add your tests here
end

我发现这个resource对于其中两个文件的新用法很有帮助。文件rails_helper.rb是RSpec 3x的新增内容,而在RSpec 2x中,默认帮助文件是spec_helper.rb

以下是我rails_helper.rb个文件中前几行的示例。它应该告诉您放置代码require 'capybara/rspec'

的位置
ENV['RAILS_ENV'] = 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)  
require 'rspec/rails'
require 'shoulda/matchers'
require 'capybara/rspec'

作为每次测试运行的某些配置的示例,当我测试图像上传时,我想在每次测试后删除上传的文件,因此我将rails_helper.rb配置为执行此操作。

config.after(:each) do
  if Rails.env.test? || Rails.env.cucumber?
    FileUtils.rm_rf(Dir["#{Rails.root}/spec/support/uploads"])
  end 
end

对于某些应用,我也想使用shoulda-matchers,要使用此功能,您必须确保为测试需要它,因此您将require 'shoulda/matchers添加到rails_helper.rb }。