所有帐户都应该工作的简单示例:
require 'test_helper'
class FoosController < ApplicationController
def index
render plain: 'something'
end
end
class UsersControllerTest < ActionDispatch::IntegrationTest
def test_some_routing
with_routing do |set|
set.draw do
get '/foos' => 'foos#index'
end
get '/foos'
assert_equal 200, response.status
end
end
end
相反,我得到:
ActionController::RoutingError: No route matches [GET] "/foos"
我究竟做错了什么?这是最新的 Rails 4.1 顺便说一句。
最佳答案
好的,所以我又来回答我自己的问题了。问题是with_routing
在集成测试中根本不起作用。监督什么的,不确定。它仅适用于 Controller 测试。所以这是解决方法:
class ActionDispatch::IntegrationTest
def with_routing(&block)
yield ComfortableMexicanSofa::Application.routes
ensure
ComfortableMexicanSofa::Application.routes_reloader.reload!
end
end
基本上,您将在该块中重新定义应用程序路由,然后从 routes.rb 文件重新加载它们。
关于ruby-on-rails - with_routing 测试助手不适用于集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27068995/