私はDeviseを使用しています。これは、私のRails3.2アプリケーションの優れた認証ツールだと思います。ただし、rspecを使用してテストするのはそれほど簡単ではありません。
これが私の問題です。私にはさまざまなユーザーロールがuser
あります。1つはです。もう1つはadmin
です。config.scoped_views = true
デバイス初期化子の内部でスコープビューをオンにし、を実行してビューを生成しましたrails generate devise:views admins
。
以下は私の失敗した仕様です:
require "spec_helper"
describe "admins/sessions/new" do
before do
render
end
it "renders the form to log in" do
rendered.should have_selector("form", action: admin_session_path, method: "post")
end
end
それは私に与えます
expected following output to contain a
<form action='/admins/sign_in' method='post'/>
tag
それが実際に得られるので
<form action="/users/sign_in" method="post">
また、ターミナルでのデフォルトのデバイスユーザー入力のみを使用して別のフォームをレンダリングします。
これは、実際の管理者ビューではなく、デフォルトのデバイスユーザービューをレンダリングしていることを示しています。ただし、管理ビューは存在し、仕様の説明のパスは正しいです。ここに示すように、私はかつて同じ問題を抱えていましたusers
が、初期化子とパスが正しく設定されていたため、これらは正常に機能しました。
テスト環境内のブラウザで問題のページにアクセスし、ページのソースコードを確認したところ、正しいことがわかりました。では、deviseのスコープビューはこの仕様に影響を与えていないと思いますか?複数のユーザースコープがあることをデバイスに伝える必要がありますか?スペック内で通常とは違うことをする必要がありますか?