これは、ユーザーコントローラーに対して編集メソッドが実行されるときに実行されるフィルターメソッドの1つです。
def correct_user?(post)
post.user == current_user || current_user.admin
end
これは私が実行しているテストです
describe PostsController do
subject { page }
let(:first_user_is_admin) { FactoryGirl.create(:user) }
describe "Admin user see edit view of someone else's post:" do
before do
sign_in first_user_is_admin
visit edit_post_path(post)
end
describe "Post is not anonymous with user_id" do
let(:post) { FactoryGirl.create(:post, :user => first_user_is_admin) }
before do
visit edit_post_path(post)
end
it { current_path.should == edit_post_path(post) }
end
end
end
このテストを実行すると、次の理由で失敗します。
Failure/Error: visit edit_post_path(post)
NoMethodError:
undefined method `admin' for nil:NilClass
post.user == current_user
コードの一部は問題ないので、これは奇妙だと思います。したがって、current_userはおそらくnilか何かではありません。
rspecテスト中にのみこの未定義のメソッドエラーが発生する理由を誰かが知っていますか?