我有一个简单的 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/