我想寫一個測試,驗證一個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代替。