describe
, context
, feature
, scenario
: Quelle est la différence (s) entre les quatre et quand dois - je utiliser chacun?
la source
describe
, context
, feature
, scenario
: Quelle est la différence (s) entre les quatre et quand dois - je utiliser chacun?
Le context
est un alias pour describe
, donc ils sont fonctionnellement équivalents. Vous pouvez les utiliser de manière interchangeable, la seule différence est la lecture de votre fichier de spécifications. Il n'y a pas de différence de sortie de test par exemple. Le livre RSpec dit:
"Nous avons tendance à utiliser
describe()
pour les choses etcontext()
pour le contexte".
Personnellement, j'aime utiliser describe
, mais je peux voir pourquoi les gens préfèrent context
.
feature
et scenario
font partie de Capybara, et non de RSpec, et sont destinés à être utilisés pour les tests d'acceptation. feature
est équivalent à describe
/ context
, et scenario
équivalent à it
/ example
.
Si vous écrivez des tests d'acceptation avec Capybara, utilisez la syntaxe feature
/ scenario
, sinon utilisez la syntaxe describe
/ it
.
Ce matin, en écrivant quelques spécifications, j'avais la même question. Habituellement, j'utilise principalement
describe
et je n'y pense pas particulièrement, mais ce matin, je traitais de nombreux cas et de différentes spécifications pour un module, donc cela devait être facilement compréhensible pour le prochain développeur qui lira ces spécifications. J'ai donc interrogé Google à ce sujet, et j'ai trouvé ceci: décrire vs contexte dans rspec , dont je trouve la réponse assez intéressante:Donc, en vous basant sur ce principe, vous écririez une spécification comme celle-ci:
Je ne sais pas si c'est une règle généralement acceptée, mais je trouve cette approche claire et assez facile à comprendre.
la source
Poursuivant l' excellente réponse de Pierre , selon la documentation :
Donc, pour ceux qui sont familiers avec les termes Mocha décrivent et il (qui sont mieux adaptés pour décrire le comportement d'un test du point de vue d'un utilisateur, d'où Mocha fonctionnant principalement comme un cadre de test frontal), vous pouvez:
describe
et /it
ou un autre couplageit
intérieur d'uncontext
bloc qui nécessite plusieurs assertions / tests dans un état d'application spécifiqueAvec la deuxième option, vous pouvez toujours suivre l'intention de "... envelopper [ping] un ensemble de tests contre une fonctionnalité sous le même état".
Ainsi, vos tests pourraient ressembler à ceci:
De cette façon, vous ignorez
feature
complètement le mot - clé, que vous voudrez peut-être utiliser pour des fonctionnalités frontales spécifiques ou si vous faites du FDD (développement piloté par les fonctionnalités), ce qui peut sembler inconfortable pour certains. Demandez à votre équipe de développeurs de vous aider ici.Attention: ne suivez pas toujours les normes de l'industrie, imaginez si nous modélisons tous nos tests sur la philosophie de Volkswagen?
la source