我想写一个测试,验证一个url重定向到一个不同的。使用rspec来测试url是否重定向其他特定的网址
例如:
http://localhost:3000/news/foobar+baz/bar+boo
到
http://localhost:3000/news?tools=foobar+baz&sources=bar+boo
使用RSpec的我似乎无法找到一个方法来做到这一点。有什么建议么?
我想写一个测试,验证一个url重定向到一个不同的。使用rspec来测试url是否重定向其他特定的网址
例如:
http://localhost:3000/news/foobar+baz/bar+boo
到
http://localhost:3000/news?tools=foobar+baz&sources=bar+boo
使用RSpec的我似乎无法找到一个方法来做到这一点。有什么建议么?
对于你的情况,你实际上是试图从/ foobar + baz/bar + boo重定向到/附加参数。 RSpec testing redirect to URL with GET params
通常不应测试与重定向URL语法参数CUS这不是URL位置,但参数:这个职位可能相似。您可以手动提取位置并解析参数以查看它们是否是您想要的。这篇文章的第一个答案举了一个例子。
您应该提出请求测试。 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代替。