web-dev-qa-db-ja.com

テストのためにRailsコントローラーに遅延を追加するには?

Webアプリケーションのフロントエンドをテストしており、AJAXリクエストの間にさまざまな遅延がある遷移の一部がどのように表示されるかをテストしたいと思います。sleep(1500)コントローラーに応答を遅らせますか?

43
RSG

次のようなコントローラー:

def catalog
  #Makes the request pause 1.5 seconds
  sleep 1.5

  ...
end

さらに良いことは、開発環境にのみスリープを追加することです。

76
RSG

受け入れられた答えについて詳しく説明します。他のコントローラーによって拡張されるデフォルトのApplicationControllerのようなベースコントローラーがある場合は、次のフィルターを定義できます。

class ApplicationController < ActionController::Base

  # adds 1s delay only if in development env
  before_filter if: "Rails.env.development?" do
    sleep 1
  end
end

ここで、1は、応答を返す前に待機する秒数です。 sleep docsを参照してください

このフィルターはトリガーされます次の場合のみアプリケーションが開発環境にあり、必要な遅延を追加しますすべてのリクエストにアプリケーションによって処理されます。

14
jmarceli