У меня есть вопрос новичка здесь.Я следовал учебному пособию по рельсам и наткнулся на препятствия в своих тестах.Когда я реализую следующий фильтр ...
class UsersController < ApplicationController
before_filter :authenticate, :only => [:edit, :update]
... все мои тесты user_controller_spec.rb, связанные с «GET edit» и «PUT update», начинают проваливаться там, где они были пройдены.Вот тот, который должен был возвращать true, но возвращать false:
describe "GET 'edit" do
before(:each) do
@user = Factory(:user)
test_sign_in(@user)
end
it "should be successful" do
get :edit, :id => @user
response.should be_success
end
end
И это мой код test_sign_in в spec_helper.rb
def test_sign_in(user)
controller.sign_in(user)
end
Метод sign_in находится в SessionsHelper, который содержитв ApplicationController:
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end
Я не знаю, как продолжить расследование.Я предполагаю, что, поскольку Rspec не смог «ПОЛУЧИТЬ редактирование», должен быть журнал этого запроса, который я могу просмотреть, но тест только говорит мне, что он вернул false.Где я могу посмотреть дальше?
Обновление: я обнаружил в log / test.log, что за каждой строкой 'Processing by UsersController # index as HTML' следует перенаправление следующим образом:
Processing by UsersController#index as HTML
[1m [35mUser Load (0.2ms) [0m SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1
Redirected to http://test.host/signin
Значит ли это, что за каждым действием тестового индекса следует перенаправление на вход?Если бы это было так, казалось бы, это согласуется с тестами, включая сбой метода test_sign_in (см. Выше) и другие тесты, подобные этому:
describe "GET 'index' for non-signed-in users" do
it "should deny access" do
get :index
response.should redirect_to(signin_path)
end
end
Я попытаюсь снова обернуть голову вокруг метода test_sign_in.