0

ApplicationController に次のコードがあります。

application_controller.rb

class ApplicationController < ActionController::Base
 protect_from_forgery
 include SessionsHelper  
end

アプリ/ヘルパー/sessions_helper.rb

module SessionsHelper
 def sign_in(user)
  cookies.permanent[:remember_token]= user.remember_token
  self.current_user = user 
 end
end 

rspec-rails を使用しており、utilities.rb ファイルでヘルパー メソッド 'sign_in' を使用しています: spec/support/utilities.rb

def sign_in(user)
 visit signin_path
 fill_in "Email",with:user.email
 fill_in "Password",with:user.password
 click_button 'Sign in'
 cookies[:remember_token]=user.remember_token
end

私の static_pages_spec は次のようになります:

 describe "When signed in" do
  let(:user) {FactoryGirl.create(:user)}
  before do
    sign_in user
  end
  describe "When no lists are present" do

    it "should show message asking to create list" do
      page.should have_selector("div",text:"You have no lists ! Create a list now !")
    end
  end
 end

テストを実行すると、次のエラーが表示されます。

StaticPages ホームページ サインイン時 リストが存在しない場合、リストの作成を求めるメッセージを表示する必要があります
     失敗/エラー: sign_in ユーザー
     NoMethodError:
       未定義のメソッドsign_in'visit' for #<SessionsController:0x00000003630c10>
     # ./spec/support/utilities.rb:2:in
     # ./app/controllers/sessions_controller.rb:13:in click_button'create'
     # (eval):2:in
     # ./spec/support/utilities.rb:5:in block (4レベル) in top (必須)>'
sign_in'
     # ./spec/requests/static_pages_spec.rb:24:in

これは SessionsController の「作成」アクションです:

def create
 user = User.find_by_email(params[:session][:email])
 if user && user.authenticate(params[:session][:password])
   sign_in user  # CODE ERRORS OUT HERE..sign_in of spec/support/utilities.rb executed
   redirect_back_or
 else
   flash.now[:error]= "Invalid email/password"
   render 'new' ,layout: "signin_fail"
 end
end

TL、DR : したがって、私の SessionsController は間違った "sign_in" メソッド (app/helpers.session_helper.rb ではなく specs/support に属するメソッド) を実行しています。spec/support のヘルパーの名前を "log_in" に変更すると、問題は解決されます。ここで何が問題になる可能性がありますか?

4

0 に答える 0