2012-06-04 66 views
1

我們的rails 3.1應用程序中有一個before_filter檢查會話超時。問題是在rspec集成測試中無法識別會話並導致rspec中的錯誤。有沒有辦法我們可以繞過application_controller中的before_filter? controller.should_receive(:my_filter)在這裏不起作用。如何在rails 3.1中的application_controller中繞過before_filter與rspec集成測試?

+0

什麼的代碼是什麼樣子?你如何驗證這一點?您可以隨時向代碼中添加一個**,除非Rails.env.test?**,以避免在測試環境中運行此過濾器。 –

+0

代碼是檢查會話[:last_seen]是否是xx分鐘前。如果是,reset_session。繞過測試環境工程。有沒有一種方法(類似於控制器rspec中的controller.should_receive(:my_filter))使rspec繞過此過濾器? before_filter會導致之前通過的集成測試失敗。 – user938363

回答

2

您可以在過濾前做這個測試:

before_filter :my_filter 

def my_filter 
    return if Rails.env.test? 
    # check session timeout... 
end 
+0

繞過測試環境工程。有沒有一種方法(類似於控制器rspec中的controller.should_receive(:my_filter))使rspec繞過此過濾器? before_filter會導致之前通過的集成測試失敗。 – user938363

相關問題