2013-01-14 46 views
0

我正在使用只應在生產中運行的gem。RSpec測試跳過篩選器

skip_after_filter :kachow_auto_include unless Rails.env.production? 

我如何測試在RSpec的測試和開發過程中跳過了這一點。

感謝

回答

2

存根上Rails.env方法調用,然後調用動作,例如:

it "should run in production environment" do 
    Rails.env.stub(:production?) { true } 
    MyController.should_receive(:kachow_auto_include) 
    get :action_that_triggers_after_filter 
end 

it "should not run unless in production" do 
    Rails.env.stub(:production?) { false } 
    MyController.should_not_receive(:kachow_auto_include) 
    get :action_that_triggers_after_filter 
end 
+0

這看起來像它應該工作,但由於某種原因,它不是嗯...有趣。即使在被絆倒時也不會運行。奇。我會繼續檢查並在這裏報告,如果我得到它的工作。 –

+0

我猜測問題是'除非'只在加載時評估一次。你可以使用proc來代替:'除非:proc {Rails.env.production? }'。缺點是你會檢查每一個請求。 –