我們在Ruby on Rails中有一個很大的應用程序,並帶有許多過濾器。其中一些過濾器可能很複雜。我正在尋找一種通過單元測試單獨測試這些過濾器的方法。現在我通過測試它們,通過在功能測試中使用它們的操作來測試它們。這只是感覺不到正確的方式。
有沒有人有此建議或經驗?如何在Ruby on Rails和測試中測試控制器過濾器::單元
1
A
回答
0
這取決於你的過濾器在做什麼。
此:http://movesonrails.com/journal/2008/1/23/testing-your-application-controller-with-rspec.html
而且還學習如何使用摩卡會讓你很長的路要走。
3
記住過濾器只是一種方法。
鑑於此:
class SomeController
before_filter :ensure_awesomeness
...
end
沒有理由你不能只是這樣做:
SomeController.new.ensure_awesomeness
,然後檢查它調用redirect_to的或是別的什麼應該做
0
獵戶我有在少數事件中與此相干。此外,大多數的時間篩選器是私人所以你必須做一個發送:
SomeController.new.send(:some_filter)
1
我a post單元測試before_filters輕鬆,你不妨去看看。希望它會有所幫助。
0
我遇到過這個問題。
如何執行需要請求的操作的過濾器。即使用閃存
示例是Authlogic require_user方法不會僅僅通過使用ApplicationController.new.send(:some_filter)而起作用。
人對如何在隔離測試這種事情一些非黑客的想法? (我通過創建一個額外的虛擬控制器,我只用於測試使用這樣做。)
1
您可以使用此代碼測試:
require "test_helper"
describe ApplicationController do
context 'ensure_manually_set_password' do
setup do
class ::TestingController < ApplicationController
def hello
render :nothing => true
end
end
NameYourApp::Application.routes.draw do
get 'hello', to: 'testing#hello', as: :hello
end
end
after do
Rails.application.reload_routes!
end
teardown do
Object.send(:remove_const, :TestingController)
end
context 'when user is logged in' do
setup do
@controller = TestingController.new
end
context 'and user has not manually set their password' do
let(:user) { FactoryGirl.build(:user, manually_set_password: false) }
setup do
login_as user
get :hello
end
should 'redirect user to set their password' do
assert_redirected_to new_password_path(user.password_token)
end
end
end
end
end
它的代碼是從http://robots.thoughtbot.com/testing-a-before-filter原來, 我改變爲Rails 3
相關問題
- 1. Ruby on Rails單元測試
- 2. 單元測試控制器
- 3. Rails間隙,單元測試控制器
- 4. 單元測試控制器
- 5. 如何單元測試過濾器?
- 6. Shoulda:測試控制器過濾器
- 7. 如何在rspec控制器測試期間登錄rails控制器過濾器
- 8. 當試圖創建單元測試(Ruby on Rails)時,在測試和rails控制檯上的不同結果
- 9. 單元測試使用$過濾器控制器功能(「翻譯」)
- 10. Ruby on rails,單元測試錯誤
- 11. 測試Ruby on Rails
- 12. AngularJS單元測試控制器$ state.go和
- 13. 單元測試從單個測試中的所有控制器
- 14. 你如何測試oauth的單元測試控制器?
- 15. Ruby on Rails單元測試日期測試失敗
- 16. Rails控制器測試
- 17. 在Ruby on Rails中跳過測試單元不起作用
- 18. Rails控制器測試:如何在測試時禁用控制器的before_filter?
- 19. 如何使用$ scope對單元測試角控制器$ on?
- 20. 是否可以在Ruby on Rails中調試單元測試?
- 21. Rails控制器Rspec測試
- 22. Ruby on Rails rspec控制器測試失敗,但不應該
- 23. 無法從控制器測試訪問燈具Ruby on Rails
- 24. Rails的測試控制器
- 25. Grails中的單元測試控制器
- 26. 在單元控制器測試
- 27. 單元測試控制器實踐
- 28. Vue.js過濾器和測試
- 29. AngularJS單元測試控制器
- 30. rails rspec模型和控制器測試
如果篩選器位於給定操作的列表中,但它不會測試篩選器本身的代碼,這對測試非常有用。 – scottd 2008-10-30 18:52:59
不幸的是,鏈接被破壞。 – 2011-02-01 22:18:22