4
我使用RSpec測試視圖(2.12在Rails 3.2.8上)。我正在使用CanCan來有條件地在頁面上顯示某些元素。這需要一個控制器方法'current_user'。在我的一些規範中,我已經能夠將current_user截斷,例如。 controller.stub(:current_user).and_return(etc) 或 view.stub.etc。rspec查看存根(stubs and partials)
這適用於我的一些規格。但是我有一對夫婦不工作,我不明白爲什麼。
兩個不工作的規範測試一個視圖,該視圖調用了局部視圖,並且在局部視圖中訪問'current_user'作爲方法。錯誤是
undefined local variable or method `current_user'
所以我想我的問題是如何正確存根方法,使他們可以訪問部分內。
應該怎麼做?
這是我想的第一件事情,但它沒有工作,所以我嘗試controller.stub並沒有任何工作。所以現在我很困惑。我可以讓view.stub(等)工作,當且僅當它是一個正在測試的單層視圖。如果視圖調用partial,則方法在partial中不可用。 –
啊!我解決了這個問題,我需要同時擁有view.stub(:current_user)和controller.stub(:current_user)。在視圖中任何對current_user的引用,都會轉到view.stub,並且對CanCan能力類中的current_user的任何引用都會傳遞給controller.stub –