Ho bisogno di stubare la risposta di un metodo current_user
in una specifica richiesta Rspec/capybara. Il metodo è definito in ApplicationController
e utilizza helper_method. Il metodo dovrebbe semplicemente restituire un id utente. All'interno del test, mi piacerebbe che questo metodo restituisse lo stesso ID utente ogni volta.Come interrompere il metodo ApplicationController nella specifica richiesta
In alternativa, ho potuto risolvere il mio problema impostando session[:user_id]
nelle specifiche (che è quello che current_user
rendimenti) ... ma questo non sembra funzionare.
Sono entrambi possibili?
Edit:
Ecco quello che ho (. Non funziona 'appena eseguito il metodo CURRENT_USER normale).
require 'spec_helper'
describe "Login" do
before(:each) do
ApplicationController.stub(:current_user).and_return(User.first)
end
it "logs in" do
visit '/'
page.should have_content("Hey there user!")
end
end
anche non funziona:
require 'spec_helper'
describe "Login" do
before(:each) do
@mock_controller = mock("ApplicationController")
@mock_controller.stub(:current_user).and_return(User.first)
end
it "logs in" do
visit '/'
page.should have_content("Hey there user!")
end
end
è 'current_user' un metodo di classe? Immagino di no. Quindi invece di 'ApplicationController.stub (: current_user)' potresti aver bisogno di 'ApplicationController.any_instance.stub (: current_user)'. – skalee