2013-03-18 4 views
6

Rails 3.2、RSpec 2.11。コントローラーマクロは機能していません。これは私が行ったすべての研究から正しく書かれているようです。ここでは、コードRSpecコントローラマクロが動作しない

/spec/support/controller_macros.rb

module ControllerMacros 
    def login_user 
    before(:each) do 
     @request.env["devise.mapping"] = Devise.mappings[:user] 
     user = FactoryGirl.create(:user) 
     @current_user = user 
     sign_in user 
    end 
    end 
end 

/spec/spec_helper.rb

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

だ/spec/controllers/companies_controller_spec.rb

require File.dirname(__FILE__) + '/../spec_helper' 

describe CompaniesController, "index companies" do 
    context "for authenticated users" do 
     login_user 
     ... 
    end 
end 

実行結果: 未定義のローカル変数またはメソッド 'login_user' for#(NameE rror)

答えて

2

hereに答えてきたようですが、あなたは私のためにそれを固定スペックタイプの追加include

+0

私はそれを試しました。同じ結果。 – justindfunk

+1

マクロからbefore(:each)を削除し、login_userを指定内のbefore(:each)ブロック内に配置するとどうなりますか? – omnikron

+0

また、あなたのdescribeブロックがちょっと変わったように見えますが、 '、"インデックス企業 "'を削除するとうまくいきますか? – omnikron

1

にごextendを変更する必要があります後

describe Api::FooController do 
    . 
    . 
end 

:前

を:

describe Api::FooController, type: :controller do 
    . 
    . 
end 
+0

これは本当の答えでなければなりません。コードのインライン展開は決して答えではありません。 – friedrich

関連する問題