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