J'ai une spécification de test dans laquelle describes
une classe et à l'intérieur de cela a divers contexts
chacun avec différents it
blocs.
Existe-t-il un moyen de désactiver context
temporairement un ?
J'ai essayé d'ajouter un pending "temporarily disabled"
appel tout en haut dans un context
Je veux désactiver, et j'ai vu quelque chose à propos de l'attente lorsque j'ai exécuté la spécification, mais il a continué à exécuter le reste des tests.
C'est ce que j'avais en quelque sorte:
describe Something
context "some tests" do
it "should blah" do
true
end
end
context "some other tests" do
pending "temporarily disabled"
it "should do something destructive" do
blah
end
end
end
mais comme je l'ai dit, il a simplement continué à exécuter les tests sous l'appel en attente.
La recherche m'a conduit à ce fil de discussion de liste de diffusion dans lequel le créateur (?) De rspec dit que c'est possible dans rspec 2, que j'exécute. Je suppose que cela a fonctionné, mais cela n'a pas eu l'effet souhaité de désactiver tous les tests suivants, ce à quoi je pense quand je vois un pending
appel.
Y a-t-il une alternative ou est-ce que je le fais mal?
describe 'XXXXX' do .... end
describe 'XXXXX' do
. A travaillé comme un charme, merci @Pyro!Utilisez des filtres d'exclusion . À partir de cette page: dans votre
spec_helper.rb
(ourails_helper.rb
)Dans votre test:
Quand je lance "rspec ./spec/sample_spec.rb --format doc"
Ensuite, la sortie doit contenir "exemple 1 du groupe 2"
Et la sortie ne doit pas contenir "exemple 1 du groupe 1"
Et la sortie ne doit pas contenir "groupe 1 exemple 2"
la source
Voyez ce que vous en pensez:
J'aime voir les raisons de mes éléments en attente lorsque je désactive quelque chose pendant "un certain temps". Ils servent de petits commentaires / TODO qui sont présentés régulièrement plutôt qu'enterrés dans un commentaire ou un exemple / fichier exclu.
Changer
it
enpending
ouxit
est rapide et facile, mais je préfère la construction de hachage. Il vous donne une documentation à chaque exécution, est une liste déroulante (ne change pas la description / le contexte / il faut donc que je décide quoi utiliser à nouveau plus tard), et est tout aussi facilement supprimé si la décision est prise ou si le bloqueur est supprimé .Cela fonctionne de la même manière pour les groupes et les exemples individuels.
la source
pending:
etskip:
, dans rspec 3.6.0. Cela me semble être la meilleure solution. dans rspec3 pending exécute toujours les tests, maisskip
ne le fait pas (cependant vous appliquez leskip
).un autre. https://gist.github.com/1300152
utilisez xdescribe, xcontext, xit pour le désactiver.
Mettre à jour:
Depuis rspec 2.11, il inclut xit par défaut. donc le nouveau code sera
Usage
la source
Utilisez en attente au lieu de décrire. Si votre blocage est:
Vous pouvez ignorer tout le bloc en:
la source
la source
Juste pour expliquer ce qui se passe avec votre code. En l'incluant là où vous l'avez, il est simplement évalué (et donc exécuté) lorsque le fichier est chargé au démarrage. Cependant, vous en avez besoin pour l'exécuter lors de l'exécution des tests. C'est pourquoi les réponses ont suggéré de mettre
pending
(RSpec 2) ouskip
(RSpec 3) dans unbefore
bloc.la source