我们在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