私は最近、Rails(3.0.8)アプリケーションでrspec-rails(2.6.1)を使用し始めました。私はTest :: Unitに慣れています。私はテストメソッドのためにフィルタを働かせることができません。私は可能な限りDRYを維持したいので、テストメソッドが呼び出される前にAuthlogicユーザーとしてログインする任意のテストメソッドで呼び出すことができるフィルタを設定したいと思います。 Iはspec_helper.rbにRSpec filterを使用することによってこれを達成しようとした:RSpec Railsログインフィルタ
config.before(:each, :login_as_admin => true) do
post "/user_sessions/create", :user_session => {:username => "admin", :password => "admin"}
end
そして私は(この場合、スペック/コントローラ/ 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
しかし
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.
ブレッヒ:私はRSpecのスペックを実行すると、私はこのエラーを取得します。テストごとに1つのHTTPリクエストしか送信できませんか?私はまた、(config.beforeブロック内で)私のauthenticate_adminメソッドをスタブしてみました。
情報ありがとう、David。私はそれがすでに報告されているのを見てうれしいです。また、RSpecに関するあなたの仕事のおかげで、本当に便利なテストフレームワークです。 – dhulihan