2011-05-23 125 views
1
  1. 如何直接調用before_filter來測試它的實現?假設我想爲ApplicationController編寫一個包含前幾個過濾器的規範。測試它們的標準方法是什麼?請注意,我不想測試他們被稱爲 - 我實際上只是想在一個規格中測試一次它們的實現。有關使用RSpec測試Rails控制器的兩個問題

  2. 我喜歡在我的控制器規格頂部有「render_views」,但是當我使用存根時,我會遇到各種奇怪的錯誤,因爲它會試圖獲取存根對象上的id或其他屬性。你如何處理這個問題,以便在使用存根時確保你的觀點是正確的?

我使用RSpec。

回答

2

廣告1)是否合適的幫手?然後測試他們作爲助手。如果在你的控制器中有方法,那麼它們是私人的,你可以在send的幫助下測試它們。

require 'spec_helper' 
describe PostsController do 
    it "private #scope should be Post.all" do 
    @controller.send(:scope).should == Post.all 
    end 
end 

廣告2) 我render_views爲好,爲我節省了對測試的意見一段時間。我不使用存根,而是使用FactoryGirl等實物。當你的物體改變時,整個物體的嘲弄會很糟糕,這是很多額外的工作。工廠不是。當然,你的測試會變慢,但是你會測試得越來越深。

+0

糟糕!我的意思是說ApplicationController,而不是幫手。我的錯。 – 2011-05-23 20:13:32