rspec & devise test helpers

后端 未结 4 1415

According to this from the devise wiki I should be able to use a login_user helper method in my controller tests. Accordingly I have the following within the spec directory:

4条回答
  •  我在风中等你
    2020-12-15 06:39

    I can't answer for sure... but the code smell for me is the "before(:each)" defined inside the helper. why don't you try:

    #support/controller_macros.rb
    module ControllerMacros    
      def login_user
        @request.env["devise.mapping"] = Devise.mappings[:user]
        @user = Factory.create(:user)
        sign_in @user
      end
    end
    

    and

    #requests/some_spec.rb
    require 'spec_helper'
    describe "GET /guides/edit" do
      before(:each) do
        login_user     
      end
    end
    

    and if that fails - maybe it just can't find @request - in which case, pass it as a variable to login_user

    Edit:

    Looks like you might need to include the devise test helpers. The rdoc says you should have this file:

    # spec/support/devise.rb
    RSpec.configure do |config|
      config.include Devise::TestHelpers, :type => :controller
    end
    

    Not sure if that differs from how you've already got it in spec_helper.rb ... looks pretty similar to me.

提交回复
热议问题