Rails测试中root_url重定向至www.example.com异常问题咨询
解决Rails测试中root_url指向example.com的问题
看起来你在写第一个控制器测试时遇到了测试环境下root_url默认指向http://www.example.com/的问题,这其实是Rails测试环境的默认配置导致的,我来给你几个实用的解决思路:
调整测试环境的默认主机配置
Rails为了统一测试环境的URL行为,默认把default_url_options[:host]设成了www.example.com。你可以选择在单个测试文件里单独配置,或者全局在测试辅助文件里设置:- 单个测试文件配置(比如
test/controllers/feedback_controller_test.rb):setup do # 改成你期望的主机,比如localhost:3000 Rails.application.routes.default_url_options[:host] = 'localhost:3000' end - 全局配置(
test/test_helper.rb),让所有集成测试都生效:class ActionDispatch::IntegrationTest setup do host! 'localhost:3000' end end
- 单个测试文件配置(比如
检查控制器测试的redirect断言
如果你的测试代码里写了类似assert_redirected_to root_url的断言,之前因为root_url是example.com,可能和你预期的localhost不匹配导致测试失败。调整主机配置后,这个断言应该就能正常通过了。验证测试环境的路由配置
你可以运行rails routes -e test命令,确认测试环境下root路由确实指向了你设置的static_pages#xxx动作,排除路由加载异常的问题。
内容的提问来源于stack exchange,提问作者Daniel Costa
相关产品推荐
相关产品推荐

