【问题标题】:Rails 3 - Testing controller's GET method - trying to use JSON and getting 406 errorsRails 3 - 测试控制器的 GET 方法 - 尝试使用 JSON 并得到 406 错误
【发布时间】:2011-04-12 14:57:11
【问题描述】:

我有一个简单的控制器,它指定:

respond_to :json

当我尝试构建一个这样调用它的功能测试时:

test "GET" do
  get 'index', :format => :json
end

一切正常。但是,如果我尝试像这样传递查询参数:

test "GET" do
  get 'index', {:my_param = '1234'}, :format => :json
end

我收到控制器返回的 406 错误。如果我通过response.inspect 转储响应,我可以看到@status = 406@header 的内容类型为text/html。如果我通过response.inspect 转储响应,对于不传递查询参数的简单情况,我会看到@header 的内容类型为application/json,正如我在代码中请求的那样。

有没有人知道我在这里做错了什么?我怀疑我用散列或其他东西搞砸了 ruby​​ 语法,但我把头撞在墙上,却一无所获。

我在运行 Ruby 1.9 和 Rails 3.0.5 的 Mac 上。

提前致谢!

【问题讨论】:

    标签: ruby ruby-on-rails-3 automated-tests


    【解决方案1】:

    这是你正在调用的函数:

    get(action, parameters = nil, session = nil, flash = nil) 
    

    :format 部分仍然是一个参数,当然不是会话或闪存。试试:

    get 'index', {:my_param => '1234', :format => :json}
    

    哦,重要提示,使用 '=>',而不是 '=' ...这是一个哈希,而不是一个赋值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多