【发布时间】:2015-11-29 07:55:37
【问题描述】:
我得到一个未初始化的常量 ControllerMacros (NameError),可能类似于这些问题(1、2、3)。我在尝试包含控制器宏时一定搞砸了语法,这样我就可以使用设计登录并在 rspec 中通过控制器测试。 Link to GitHub repo。 Rails 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
【问题讨论】:
标签: ruby-on-rails ruby rspec devise macros