1

私は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のスコープビューはこの仕様に影響を与えていないと思いますか?複数のユーザースコープがあることをデバイスに伝える必要がありますか?スペック内で通常とは違うことをする必要がありますか?

4

2 に答える 2

2

Railsサーバーを再起動し、これがinitializers/devise.rb問題を解決したことを確認します。

config.scoped_views = true
于 2013-03-30T12:51:16.967 に答える
0

この行をspec_helperに追加してみましたか?

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end
于 2013-01-30T14:27:46.347 に答える