2011-05-20 25 views
3
it "should have edit button if user has permission to edit" do 
    EntitiesHelper.stubs(:permission_to_edit_entity?).returns(true) 
    get :index 
    @entities[0..3].each do |entity| 
    response.should have_selector("form", 
     :method => "get", 
     :action => "/entities/edit/#{entity[:id]}") do |form| 
     form.should have_selector("input", :value => "Edit") 
    end 
    end 
end 

我想寫一個簡單的測試用例,它測試如果用戶有編輯權限就顯示編輯按鈕。我正在嘗試爲此使用stubbing。但是,它似乎並不奏效。如果存根工作,輸出視圖不會顯示每個實體旁邊的編輯按鈕。我是摩卡新手和殘肢 - 我在這裏做錯了什麼?使用摩卡的存根助手

謝謝!

+0

我假設你在視圖規範中這樣做?因爲如果它是一個控制器規範,你試圖測試這將永遠不會工作 - rspec在這些情況下嘲笑視圖 – RyanWilcox 2011-05-20 19:20:16

+0

即使我說頂部的「render_views」? (是的,我在控制器規範中這樣做) – deruse 2011-05-20 19:38:45

+0

如果這樣不能解決問題,我如何在視圖規範中實現相同的效果? – deruse 2011-05-20 19:45:49

回答

0

我假設EntitiesHelper是一個普通的老式軌輔助器,它被混合到控制器中 - 因此所有它的實例方法(如permission_to_edit_entity?)都可用於控制器,視圖可以訪問這些輔助方法(通過控制器)。 ..所以你可能存根控制器上的方法:

controller.stubs(:permission_to_edit_entity?).returns(true) 

在這種特殊情況下我甚至會考慮更改存根嘲笑,因爲你所期望的方法被調用(雖然你正在測試的按鈕存在,這是很好的知道,流量沒有按預期發生):

controller.expects(:permission_to_edit_entity?).returns(true) 

但這當然是有爭議的,你應該罰款任何方式...