2013-03-18 20 views
6

Rails 3.2, RSpec 2.11. La macro del controller non funziona e sembra che sia stata scritta correttamente da tutte le ricerche che ho fatto. Ecco il codiceMacro controller RSpec non funzionante

/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 

risultati di esecuzione: variabile locale non definita o metodo 'login_user' per # (NameE rror)

risposta

2

sembra essere stato risposto here, è necessario modificare la vostra extend a un include

+0

L'avevo provato. Stessi risultati – justindfunk

+1

Cosa succede se si rimuove il precedente (: ciascuno) dalla macro e si posiziona l'utente login all'interno di un blocco precedente (: ciascuno) all'interno della propria specifica? – omnikron

+0

anche il blocco descrittivo sembra un po 'strano, funziona se si rimuovono le "," società di indici "'? – omnikron

1

Aggiungendo il tipo specifiche fissato per me:

Prima:

describe Api::FooController do 
    . 
    . 
end 

Dopo:

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

Questa dovrebbe essere la vera risposta. Inline il codice non è mai la risposta. – friedrich

Problemi correlati