我想编写一个测试来验证网址是否重定向到另一个网址。
例如:
http://localhost:3000/news/foobar+baz/bar+boo
到
http://localhost:3000/news?tools=foobar+baz&sources=bar+boo
使用RSpec我似乎无法找到实现此目的的方法。有什么建议吗?
答案 0 :(得分:1)
在您的情况下,您实际上是尝试从/ foobar + baz / bar + boo重定向到/附加参数。这篇文章可能类似:RSpec testing redirect to URL with GET params
通常,您不应该使用重定向url语法来测试参数cus这不是url位置而是参数。您可以手动提取位置并解析参数以查看它们是否符合您的要求。该帖子中的第一个答案给出了一个例子。
答案 1 :(得分:0)
您应该进行请求测试。 RSpec有:
expect(response).to redirect_to(...)
但它没有对params进行断言
你使用这个:
def expect_to_redirect_to_with_params(expected_url, expected_params)
redirect_url = response.location
uri = URI.parse(redirect_uri)
redirect_params = Rack::Utils.parse_query(uri.query)
expect(redirect_url).to eq(expected_uri)
expect(redirect_params).to eq(expected_params)
end
如果您愿意,可以使用自定义matcher代替方法。