2010-11-21 6 views
27

J'ai plusieurs contrôleurs déjà configurés. Maintenant, je veux commencer à écrire des tests de spécification pour eux. Y at-il une commande qui génère automatiquement les fichiers spec? Je sais que les rails le font pour de nouvelles ressources, mais je ne sais pas si c'est le cas pour les contrôleurs/modèles existants.Comment générer des spécifications pour les contrôleurs existants?

Répondre

42
rails g rspec:controller ControllerName 

Quand il vous demande de remplacer le contrôleur existant, le type n.

+6

Cela ne génère que la fichier spec pour le contrôleur. Si vous voulez les fichiers associés, tels que des assistants ou des usines, alors vous voulez: 'rails g controller ControllerName -s' Le -s à la fin l'amènera à ignorer tous les fichiers existants afin que vous n'ayez pas à vous soucier de la question en ce qui concerne n'importe quoi. – Blimey85

+0

cela fonctionne aussi pour le modèle? 'rspec: modèle'? cela existe sur rspec 1? –

+0

Est-ce que quelque chose de namespaced dans 'rspec' normalement essaie de créer un contrôleur? Ou pensez-vous à ce que font les 'rails g controllerName '? –

4

Si vous avez configuré rspec dans application.rb:

config.generators do |g| 
    g.test_framework  :rspec 
end 

alors rails g controller things fonctionnera. Ne pas écraser les fichiers au fur et à mesure qu'ils sont générés.

Tous spec ressemble quand il est généré est la suivante:

require 'spec_helper' 

describe ThingsController do 

    it "should be successful" do 
    get :index 
    response.should be_successful 
    end 

end 

Je crée souvent les spécifications manuellement, comme il est assez trivial.

+6

J'ai remarqué que parfois les tests générés peuvent être plus détaillés que ça. Surtout lorsque vous générez des ressources, le test contiendra du code pour toutes les méthodes REST. – picardo

+0

Vous avez spécifiquement indiqué "contrôleurs existants" dans le titre de votre question, donc je n'ai pas remarqué que vous incluiez des modèles dans le texte. Quoi qu'il en soit, réexécuter le générateur et dire «n» quand ils demandent d'écraser le fichier du modèle ou du contrôleur répondra bien à vos besoins. :) –

8

Il existe deux options. Si vous voulez un fichier spec vide, vous pouvez essayer avec:

rails g rspec:controller ControllerName 

Maintenant, si vous voulez un fichier de spécification avec les spécifications initiales pour un contrôleur REST de base, essayez avec:

rails g rspec:scaffold ControllerName 
Questions connexes