1

カスタム デバイス ビューをカピバラでテストしていますが、いくつかのビューをテストするにはログイン ユーザーが必要です。次に例を示します。

feature 'user/edit' do
  describe "the edit profile process", :type => :feature do
    include Devise::TestHelpers

    let!(:user){ FactoryGirl.build(:user)

    def sign_in(user)
      if user.nil?
        request.env['warden'].stub(:authenticate!).
          and_throw(:warden, {:scope => :user})
          controller.stub :current_user => nil
      else
        request.env['warden'].stub :authenticate! => user
         controller.stub :current_user => user
      end
    end

    it "update " do
      sign_in(user)
      visit '/users/edit'
      within("#edit_user") do  
         #=> something
      end
      click_on 'Update'
      page.should have_content("something")
    end
  end
end

しかし、私はこのエラーが発生しました

Failure/Error: request.env['warden'].stub :authenticate! => user

NoMethodError: undefined method `env' for nil:NilClass
4

1 に答える 1

1

モジュールはインスタンス変数をDevise::TestHelpers確立します。@requestを参照requestしていますが、明らかにnil他のアクセス可能なスコープに設定されているため、エラーが発生します。

のソースについては、https://github.com/plataformatec/devise/blob/b8ed2f31608eccb6df6d5bb2e66238d6dfc4bcfc/lib/devise/test_helpers.rbを参照してくださいTestHelpers

于 2013-10-30T16:40:20.287 に答える