假设我有一个名为
我查看了文档,并尝试搜索
非常感谢您的帮助。
FoosController
的控制器,并且其中有一个名为 redirect_to_baz
的方法。class FoosController < ApplicationController
def redirect_to_baz
redirect_to 'http://example.com/?foo=1&bar=2&baz=3'
end
end
我正在使用 spec/controllers/foos_controller_spec.rb
进行测试:
require 'spec_helper'
describe FoosController, :type => :controller do
describe "GET redirect_to_baz" do
it "redirects to example.com with params" do
get :redirect_to_baz
expect(response).to redirect_to "http://example.com/?foo=1&bar=2&baz=3"
end
end
end
这是有效的。然而,如果有人交换查询字符串参数(例如http://example.com/?bar=2&baz=3&foo=1
),则测试将失败。
如何正确测试?
我想做类似这样的事情:
expect(response).to redirect_to("http://example.com/", params: { foo: 1, bar: 2, baz: 3 })
我查看了文档,并尝试搜索
response.parameters
,但我没有找到类似的内容。即使是Hash#to_query
也似乎无法解决这个问题。非常感谢您的帮助。
expect(response).to redirect_to(A_REGEX)
works for Rails 4 only. For Rails 3, your best bet is probablyexpect(response.location).to match(THE_REGEX)
- Isaac Betesh