0

Projectコントローラとrspecファイルがあります。私はcurrent_userこのようにヘルパーを使用しています:

# projects_controller_spec.rb

describe "user signed in" do
  before(:each) { sign_in @user }
  after(:each)  { sign_out @user}

  describe "GET index" do      
    it "assigns all projects as @projects" do
      project = FactoryGirl.create(:project, :user => current_user)
      get :index, {}, valid_session
      assigns(:projects).should eq([project])
    end
  end
  ...
end

ヘルパーsign_insign_outは正常に動作しているようですが、エラーが発生しましたcurrent_user

undefined local variable or method `current_user'

何が問題になる可能性がありますか、それを修正する方法は?

4

1 に答える 1

0

それは正常です。User インスタンスを作成する必要があります。次のように let を使用できます。

# projects_controller_spec.rb

describe "user signed in" do

  let(:user) {FactoryGirl.create(:user)}
  before(:each) { sign_in user }
  after(:each)  { sign_out user}

  describe "GET index" do      
    it "assigns all projects as @projects" do
      project = FactoryGirl.create(:project, :user => user)
      get :index, {}, valid_session
      assigns(:projects).should eq([project])
    end
  end
  ...
end

あなたは current_user がユーザーであることを知っています...

各仕様の後に使用をサインアウトする必要はありません。

于 2012-07-27T18:33:58.067 に答える