Недавно я начал использовать rspec-rails(2.6.1) с моим приложением Rails(3.0.8). Я привык к Test::Unit и не могу заставить фильтр работать для моих тестовых методов. Мне нравится, чтобы все было как можно СУХИМ, поэтому я хотел бы настроить фильтр, который я могу вызывать для любого тестового метода, который войдет в систему как пользователь Authlogic до вызова тестового метода. Я попытался сделать это с помощью фильтра RSpec. в spec_helper.rb:
config.before(:each, :login_as_admin => true) do
post "/user_sessions/create", :user_session => {:username => "admin", :password => "admin"}
end
Затем я использую его в соответствующем тестовом методе (в данном случае spec/controllers/admin_controller_spec.rb):
require 'spec_helper'
describe AdminController do
describe "GET index" do
it("gives a 200 response when visited as an admin", :login_as_admin => true) do
get :index
response.code.should eq("200")
end
end
end
Однако я получаю эту ошибку, когда запускаю rspec spec:
Failures:
1) AdminController GET index gives a 200 response when visited as an admin
Failure/Error: Unable to find matching line from backtrace
RuntimeError:
@routes is nil: make sure you set it in your test's setup method.
Блех. Могу ли я отправить только один HTTP-запрос на тест? Я также попытался заглушить мой метод authentication_admin (внутри блока config.before), но безуспешно.