最近、Rails(3.0.8) アプリで rspec-rails(2.6.1) を使い始めました。私は Test::Unit に慣れていますが、私のテスト メソッドに対してフィルターを機能させることができないようです。私は物事をできるだけ DRY に保つのが好きなので、テスト メソッドが呼び出される前に Authlogic ユーザーとしてログインする任意のテスト メソッドで呼び出すことができるフィルターを設定したいと思います。spec_helper.rb でRSpec フィルターを使用して、これを達成しようとしました。
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.
ブリーチ。テストごとに 1 つの HTTP 要求のみを送信できますか? また、authenticate_admin メソッド (config.before ブロック内) をスタブ化しようとしましたが、運がありませんでした。