web-dev-qa-db-fra.com

Comment ajouter un délai au contrôleur Rails pour les tests?

Je teste le front-end d'une application Web et je veux tester la façon dont certaines transitions apparaissent avec divers retards entre les demandes AJAX. Existe-t-il un moyen d'ajouter une fonction sleep(1500) à mon contrôleur pour retarder la réponse?

43
RSG

Contrôleur comme ça:

def catalog
  #Makes the request pause 1.5 seconds
  sleep 1.5

  ...
end

Encore mieux: ajoutez uniquement le sommeil pour l'environnement de développement.

76
RSG

Élaboration d'une réponse acceptée. Si vous avez un contrôleur de base comme le ApplicationController par défaut qui est étendu par tout autre contrôleur, vous pouvez définir le filtre suivant:

class ApplicationController < ActionController::Base

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

Où: 1 est le nombre de secondes à attendre avant de retourner une réponse, voir sleep docs

Ce filtre ne sera déclenché que si votre application est dans environnement de développement et cela ajoutera le délai souhaité à chaque demande traitée par votre application.

14
jmarceli