ruby-on-rails - 包含用于 rspec 测试/w 设备的 Controller 宏的问题

标签 ruby-on-rails ruby rspec devise macros

我收到一个未初始化的常量 ControllerMacros (NameError),可能与这些问题类似( 123 )。我在尝试包含 Controller 宏时一定搞砸了语法,这样我就可以使用 devise 登录并通过 rspec 中的 Controller 测试。 Link to GitHub repoRails 4.1.8 和 Ruby 2.1.2

spec/controllers/static_pages_controller_spec.rb

require 'rails_helper'


describe StaticPagesController, :type => :controller do
  describe "GET #index" do
    it "responds successfully with an HTTP 200 status code" do
      login_user
      get :index
      expect(response).to be_success
      expect(response).to have_http_status(200)
    end

    it "renders the index template" do
      login_user
      get :root
      expect(response).to render_template("index")
    end
  end

end

spec/support/controller_macros.rb

module ControllerMacros
  def login_admin
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:admin]
      admin = FactoryGirl.create(:admin)
      sign_in :user, admin # sign_in(scope, resource)
    end
  end

  def login_user
    before(:each) do
      @request.env["devise.mapping"] = Devise.mappings[:user]
      user = FactoryGirl.create(:user)
      user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the "confirmable" module
      sign_in user
    end
  end
end

spec/rails_helper添加了行

   #helps avoid authentication error during rspec:
    config.include Devise::TestHelpers, :type => :controller
    config.include ControllerMacros, :type => :controller

最佳答案

这对我有用。

规范/支持/devise.rb

require 'devise'

RSpec.configure do |config|
 config.include Devise::TestHelpers, :type => :controller
 config.extend ControllerMacros, :type => :controller
end

还要确保该行在rails_helper.rb中未注释

Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }

关于ruby-on-rails - 包含用于 rspec 测试/w 设备的 Controller 宏的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376339/

相关文章:

css - 在索引页中渲染一个 show Action - rails

ruby-on-rails - Rails 组织单元测试的方式是什么?

javascript - rails 3 : How to send Javascript code from Controller?

ruby - 排列成连续数字的范围

ruby-on-rails - 为什么这个简单的 RSpec 字符串相等规范会失败?

ruby-on-rails - 如何使用 JSON 的 Nokogiri 中的 XPath 从 eBay 和亚马逊抓取图像

java - 客户端 HTTP Post 到外部站点

ruby - 包含/扩展内核不会在主 :Object 上添加这些方法

ruby-on-rails-3 - 我应该如何测试包含来自 lib/目录的方法的 Rails Controller 操作?

ruby-on-rails - 在 Rails 中,定义常量字符串(如错误消息、通知等)的最佳方法是什么?