ruby - Rails 3 - 测试 Controller 的 GET 方法 - 尝试使用 JSON 并出现 406 错误

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

我有一个简单的 Controller ,它指定:

respond_to :json

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

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

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

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

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

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

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

提前致谢!

最佳答案

这是你调用的函数:

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

:format 部分仍然是参数,当然不是 session 或闪存。尝试:

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

哦,重要提示,使用“=>”,而不是“=”……那是散列,而不是赋值。

关于ruby - Rails 3 - 测试 Controller 的 GET 方法 - 尝试使用 JSON 并出现 406 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637295/

相关文章:

node.js - 开 Jest - 有没有办法检查测试覆盖率的百分比?

ruby-on-rails - 如何检查字符串中的值是否为 IP 地址

ruby-on-rails-3 - 如何在 Rails 3 中设置 FB channel 文件的过期日期

web-services - 在 ROR 3 中公开 Web 服务 API

ruby-on-rails - 如何在 Rails 模型的回调中访问参数?

javascript - 无法使用使用execute_script Selenium的javascript点击按钮

unit-testing - 多少单元测试是一件好事?

ruby-on-rails - rails : undefined method Error when scoping

ruby-on-rails - 如何在 Rails 中创建事件记录类的非持久化实例?

ruby - 使用 Ruby,我如何确认 XML 片段是否有效?