在rails 4应用程序中需要Rspec中的模块

时间:2015-02-19 22:03:06

标签: ruby-on-rails ruby-on-rails-4 rspec

我试图在Rspec中包含其他Devise助手但收到以下错误:

rails_helper.rb:56:in `block in <top (required)>': uninitialized constant ControllerMacros (NameError)

rails_helpers.rb中的第56行是我拥有的config.include ControllerMacros行。我试图通过其他SO帖子中发布的解决方案来解决这个问题,但似乎无法实现这一点。我知道这可能是一个需求订单问题,但我们无法找到正确的订单。

rails_helper.rb

ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rails'
require 'capybara/rspec'
require 'devise'
ctiveRecord::Migration.maintain_test_schema!

RSpec.configure do |config|
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.use_transactional_fixtures = true
  config.infer_spec_type_from_file_location!
  config.include Capybara::DSL
  config.include Devise::TestHelpers, :type => :controller
  config.include ControllerMacros, :type => :controller
end

规格/支持/ controller_macros.rb

module ControllerMacros
  def login_business
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:business]
      business = FactoryGirl.create(:business)
      buisness.confirm!
      sign_in business
    end
  end
end

规格/ business_account_controller_spec.rb 要求&#39; spec_helper&#39; 要求&#39; rails_helper&#39;

describe BusinessAccountController do
  login_business

  it "should have current user" do
    expect(subject).to_not be_nil
  end
end

1 个答案:

答案 0 :(得分:1)

您需要在requirerails_helper。我将所有模块放在/spec/support中,然后将Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }放在rails_helper

的顶部