0

リクエスト仕様に次のコードがあります。

describe 'Poll' do
    subject { page }

    context 'as system admin' do
        let(:user) { Fabricate(:system_admin) }
            before { login user}

        it 'is accessible' do
            visit '/admin/poll'
            current_path.should == '/admin/poll'
        end

        describe 'sending poll' do

            it 'sends to all users' do
                save_and_open_page
            end
        end
    end
end

メソッドが正常に機能しているように見えても、ログインユーザーは機能していないようです。login userブロック内で使用しit 'is accessible' doてみましたが、そのようにすればスペックは正常に機能します。そこから取り出して、before上記のようなブロックに入れたら。ユーザーはサインインしたままではありません。save_and_open_pageデバッグするためにを入力すると、次のページに次の通知が表示されます。

Your account was not activated yet. If a reset password link was sent to you, use that link to change your password.

Devise、RSpec、Capybara、Rails3を使用しています。Fabricationconfirm!ファイルでuserもに設定しました。以下はその外観です。

Fabricator(:system_admin) do
    first_name { sequence(:first_name) { |n| "Person#{n}"} }
    last_name { sequence(:last_name) {|n| "#{n}" } }
    email { sequence(:email) { |n| "person_#{n}@example.com"} }
    password "foobar"
    password_confirmation "foobar"
    company_name { sequence(:company_name) { |n| "google#{n}" } }
    role "system_admin"

    after_create do |user|
        user.confirm!
      user.create_company
    end
end

質問:何が問題になる可能性がありますか?ユーザーがログインしたままにならないのはなぜですか。また、アカウントをアクティブ化する必要があるというメッセージが表示されるのはなぜですか。十分ではありませuser.confirm!んか?

4

4 に答える 4

0

before(:each)問題を解決する必要があると思います

于 2013-02-18T22:45:07.240 に答える
0

これは問題でしょうか?

製作(:システム管理者) !=製作者(:システム管理者)

于 2013-02-10T21:23:11.190 に答える
0

そのため、save_and_open_page をデバッグして、アカウントがアクティブ化されていないと表示された場合、ファブリケートが正しく機能していないように見えます。それを試してデバッグしましたか?

あなたの save_and_open_page は何をしますか? ユーザーを何かに使用しようとしていますか?let で定義したときに経験したので、変数(この場合はユーザー)に触れなければ、そのコンテキストには存在しません。そのほか。このような仕様を実行すると、「アクセス可能です」というエラーは何ですか? ログインしているユーザーがいないと言っているだけですか?

したがって、ログイン用のメソッドをスタブ化するか (たとえば、ログインしているユーザーなどを提供する current_user というメソッドがある場合)、または let を使用する代わりに、次のように開始できます。

ユーザー=製作(:system_admin)

しかし、ここにはたくさんの良いアドバイスがあります:

http://betterspecs.org/

ブロックのコンテキストと説明が複雑すぎるようです。私もこのガイドラインに 100% 従うわけではありませんが、従うべきだと思います。

機能しない別の理由を見つけた場合はお知らせください。

于 2013-02-15T21:09:16.400 に答える