2010-10-19 4 views
1

J'ai un PathsHelper qui écrase foo_url et foo_path en traitant des paramètres supplémentaires ainsi que le contexte de l'URL actuelle. Ceci est inclus dans ApplicationController.Dois-je tester les aides du contrôleur ou le contrôleur lui-même avec Rspec?

En ce moment, j'ai:

describe ApplicationController do 
    describe "#foo_url" do 
    ... 
    end 
    describe "#foo_path" do 
    ... 
    end 
end 

Je me demande s'il est préférable de faire quelque chose le long des lignes de:

describe PathsHelper do 
    describe "#foo_url" do 
    ... 
    end 
    describe "#foo_path" do 
    ... 
    end 
end 

Si oui, est-il un moyen raisonnable de fixer un certain variables d'instance dans le test d'assistance, car il existe des conditions basées sur l'URL actuelle.

Répondre

2

Alors que RSpec vise à se concentrer sur le comportement, je spécifie toujours des aides complexes dans les spécifications helper. C'est pourquoi les spécifications d'aide existent dans RSpec en premier lieu :)

+0

Eh bien, y allez, le gars qui a écrit RSpec nous a donné la réponse;) –

+0

David, si je fais cela, comment puis-je définir des variables d'instance à l'intérieur de l'assistant , car foo_url et foo_path se comportent différemment si une variable d'instance est définie. –

2

Le contrôleur

Rappelez-vous dans RSpec vous spécifiez les comportements et faire en sorte que ces comportements se produisent la façon dont vous voulez qu'ils. Ces comportements se produisent via l'interaction avec votre contrôleur. Alors, écrivez vos spécifications pour le contrôleur et assurez-vous de tester le comportement de l'assistant.

Vous voulez éviter de trop piquer dans les entrailles de vos classes et objets. C'est l'une des raisons principales pour RSpec. Les gens faisaient des tests stupides sur l'état interne de leurs classes au lieu de tester les résultats souhaités.

Questions connexes