这是为用户控制器运行编辑方法时运行的过滤器方法之一
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 测试期间得到这个未定义的方法错误?