4

https上で実行する必要のあるアクションの機能テストを作成しようとしています。HTTPSリダイレクトをテストしていません-別のテストで機能することはすでにわかっています。

私がやろうとしていることは:

get :new, :protocol => "https://"
assert_redirected_to :root

ただし、これはhttps経由でリクエストを発行しません。プロトコルを変更できる「get」オプションはありますか?

また、URLを指定しようとすると(例:get "https:/test.host/do/something")、httpsのレールレベルにルートがないため、ルーティングエラーが発生します。これはWebで処理されます。サーバーレベル。

4

2 に答える 2

8

私はここではるかに簡単な答えを見つけました:http: //railspikes.com/2008/9/12/testing-ssl

これは、(a)SSLが必要な各機能テストの開始時、または(b)コントローラーのすべてのアクションがSSLを使用する場合は、「setup」メソッドのいずれかに次の行を配置します。

@request.env['HTTPS'] = 'on'

これにより、すべてのリクエストの前にhttpsが追加されます

于 2010-10-04T02:30:17.597 に答える
1

機能テストでは、HTTPなどからのルーティングはなく、コントローラーを直接使用します。したがって、HTTPまたはHTTPSからのものになることをテストすることはできません。

ただし、リクエストをモックすることはできます。protocoledansはそれを「https」のように定義します。

request.stub(:protocol).and_return("https://")
get :new
于 2010-09-29T07:07:56.217 に答える