ruby-on-rails - with_routing 测试助手不适用于集成测试

标签 ruby-on-rails ruby-on-rails-4

所有帐户都应该工作的简单示例:

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/

相关文章:

ruby-on-rails - Bootstrap Dropdown 在 Ruby on Rails 中不起作用

ruby-on-rails - Controller 根据上一页重定向到不同的路径

html - 如何在使用 CSS 或 javascript/jquery 打印文档时添加页码

ruby-on-rails - 解决类和 gem 之间的命名空间冲突

ruby-on-rails - RSpec 在创建对象时跳过许多验证之一

mysql - 安装 mysql2 0.3.13

ruby-on-rails - 为什么更新操作不适用于 rails 中的嵌套表单字段?

asset-pipeline - Rails 4 Assets 管道供应商 Assets 镜像未预编译

ruby-on-rails - 未定义方法 `email' 为 nil :NilClass link. user.email

javascript - 使用 Paperclip 通过 http 将图像发布请求上传到其他应用程序