2017-06-21 4 views
0

URLが別のURLにリダイレクトされていることを確認するテストを作成します。例えばrspecを使用してURLが他の特定のURLをリダイレクトするかどうかをテストする

http://localhost:3000/news/foobar+baz/bar+boo

RSpecのを使用して

http://localhost:3000/news?tools=foobar+baz&sources=bar+boo


に私はこれを行うための方法を見つけるように見えることはできません。助言がありますか?

答えて

1

実際には、/ foobar + baz/bar + booから/にパラメータを追加してリダイレクトしようとしています。 RSpec testing redirect to URL with GET params

通常、リダイレクトurl構文でパラメータをテストしないでください。これはURLの場所ではなくパラメータです。手動で場所を抽出し、パラメータが必要なものかどうかを調べることができます。そのポストの最初の答えが例です。

0

リクエストテストを行う必要があります。 RSpecのは持っている:

expect(response).to redirect_to(...) 

が、それはあなたはこの1つを使用するの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にそれを作ることができます。

関連する問題