单位恒定设计RSPEC

the*_*he_ 6 ruby unit-testing rspec ruby-on-rails devise

我正在使用RSpec和Capybara的Rails 4应用程序.

我的gemfile看起来像:

source 'https://rubygems.org'
gem 'rails', '4.0.0'
gem 'pg'
gem 'devise'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'jquery-turbolinks'
gem 'turbolinks'
gem "rspec-rails", :group => [:test, :development]
group :test do 
  gem "factory_girl_rails", "~> 4.0"
  gem "capybara"
  gem "guard-rspec"
end
Run Code Online (Sandbox Code Playgroud)

我的spec_helper.rb文件如下所示:

require "capybara/rspec"
include Capybara::DSL

RSpec.configure do |config|
   config.include Devise::TestHelpers, :type => :controller
   config.extend ControllerMacros, :type => :controller
end
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我得到了错误:uninitialized constant Devise (NameError) .在我的应用程序中,Devise正常工作,我在spec/support中有ControllerMacros文件.

Sac*_*ngh 8

试试这个:

你的spec_helper应该是这样的

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment",__FILE__)
require 'rspec/rails'
require "capybara/rspec"
include Capybara::DSL

RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
config.extend ControllerMacros, :type => :controller
end
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是rspec-rails gem,请将配置行添加到`spec/rails_helper.rb`而不是`spec/spec_helper.rb` (12认同)