2010-11-17 3 views
2

Je souhaite inclure les aides à la demande (à partir de ActionDispatch :: Integration :: RequestHelpers [ApiDock], comme les méthodes post et xhr) également dans certaines spécifications en dehors des spécifications de mon contrôleur. Le problème est que ces helpers de requête sont seulement inclus dans spec/controller et quand un controller est décrit. Que dois-je inclure/exiger dans ces spécifications? J'utilise RSpec 2 et Rails 3.Utiliser des aides à la demande en dehors des spécifications du contrôleur

Répondre

2

Je viens de résoudre le problème en incluant le code ci-dessous dans mon assistant d'acceptation. Si vous n'êtes pas Steak, il vous suffit de le mettre dans l'aide de spec ou de l'exiger d'un autre endroit. Les méthodes post et xhr sont désormais disponibles dans cette spécification, quelle que soit la spécification ou le répertoire dans lequel vous vous trouvez.

Le code est dérivé de RSpec :: Rails :: RequestExampleGroup

 
RSpec::Core::ExampleGroup.class_eval do 
    include ActiveSupport::Concern 
    include ActionDispatch::Integration::Runner 
    include RSpec::Rails::BrowserSimulators 

    def app 
    ::Rails.application 
    end 

    def last_response 
    response 
    end 
end 
1

Je sais qu'il est 4 ans plus tard et beaucoup de choses ont évidemment changé, mais depuis que je suis tombé sur cette question en cherchant comment faire d'autres les tests se comportent comme des tests de contrôle (et ont donc post et get méthodes, etc.) Je voulais souligner cette solution qui fonctionne avec RSpec 3: si vous ajoutez cela à la spec_helper

config.include RSpec::Rails::RequestExampleGroup, type: :request, example_group: { file_path: /spec\/(api|integration)/ 

il mak Tous les tests dans le chemin donné prennent en charge les méthodes du contrôleur.

Questions connexes