2013-01-05 87 views
1

我在application_helper中有一個名爲admin_rights的方法嗎?檢查用戶是否應該能夠向網站添加內容。我還沒有實現一個用戶系統,所以現在只返回true。但我試圖測試它,但我似乎無法找出如何將它存根,所以它在測試中返回false。規範檢查只應在​​admin_rights時可見的鏈接?返回true。當我通過更改admin_rights手動測試它?爲假,它按預期工作。所以我顯然沒有正確地把它弄壞。Stubbing Helpers rspec

的規格是:

context "no admin rights" do 
    before do 
    page.stub(:admin_rights?).and_return(false) 
    visit fencers_path 
    end 
    it "should not have add fencer link" do 
    expect(page).not_to have_link('+ Fekter', href: new_fencer_path) 
    end 
end 

我正在尋找正確的方法存根出來或以測試它的另一種方式。

回答

1

您發佈的測試用例是一個驗收測試。它引導一個服務器實例並遍歷整個堆棧。在這類測試中,你絕對不應該依賴恥辱和嘲弄。他們應該確保整個應用程序的工作,並應將您的應用程序視爲黑盒子。代替微小的代碼是非常脆弱的驗收測試的祕訣。此外,如果您使用運行Javascript的驅動程序運行測試,那麼就沒有機會讓樁工作,因爲服務器運行在與測試不同的過程中。

您應該實施admin_rights?的邏輯,然後調整您的驗收測試設置邏輯實際返回false。例如,用普通用戶登錄,該用戶沒有管理員權限。最後,您希望您的驗收測試與現實世界的場景緊密匹配。