0
这是一种当编辑方法跑了用户控制器rspec的+设计:CURRENT_USER是缺少属性方法时rspec的是跑
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可能不是零或什么的。
任何人有,为什么我只在rspec的测试得到这个未定义的方法错误的任何想法?
这是我的合法错误。感谢您的发现。我删除了那一点,但我仍然得到相同的错误。 – 2013-03-20 03:33:30
好的,也许是'def correct_user?(post) post.user == current_user || current_user.admin end'节。如果你在'rails console'中测试它,这个方法是否工作?从错误消息的外观来看,它无法找到当前用户,因此跳转到||的另一侧它在一个不存在的对象上调用.admin,因此'未定义的方法'admin'为零:NilClass' – muttonlamb 2013-03-20 03:59:03
愚蠢的我!测试错误是针对同一文件中的其他测试!感谢您的帮助 – 2013-03-20 05:16:47