describe
, context
, feature
, scenario
: Qual é a diferença (s) entre os quatro e quando devo usar cada um?
fonte
describe
, context
, feature
, scenario
: Qual é a diferença (s) entre os quatro e quando devo usar cada um?
O context
é um alias para describe
, portanto, eles são funcionalmente equivalentes. Você pode usá-los de forma intercambiável, a única diferença é como seu arquivo de especificação é lido. Não há diferença na saída do teste, por exemplo. O livro RSpec diz:
“Nós tendemos a usar
describe()
para coisas econtext()
para contexto”.
Pessoalmente, gosto de usar describe
, mas posso ver porque as pessoas preferem context
.
feature
e scenario
fazem parte do Capybara, e não do RSpec, e devem ser usados para testes de aceitação. feature
é equivalente a describe
/ context
e scenario
equivalente a it
/ example
.
Se você está escrevendo testes de aceitação com Capybara, use a feature
/ scenario
sintaxe, se não use describe
/ it
sintaxe.
Esta manhã, enquanto escrevia algumas especificações, tive a mesma pergunta. Normalmente, eu uso principalmente
describe
e não penso particularmente sobre isso, mas esta manhã eu estava lidando com muitos casos e especificações diferentes para um módulo, então tinha que ser facilmente compreensível para o próximo desenvolvedor que lerá essas especificações. Então, perguntei ao Google sobre isso e achei o seguinte: descrever vs. contexto em rspec , cuja resposta acho bastante interessante:Portanto, com base neste princípio, você escreveria uma especificação como esta:
Não tenho certeza se essa é uma regra geralmente aceita, mas acho essa abordagem clara e muito fácil de entender.
fonte
Expandindo a excelente resposta de Pierre , de acordo com os documentos :
Portanto, para aqueles familiarizados com os termos do Mocha descreva e ele (que são mais adequados para descrever o comportamento de um teste da perspectiva do usuário, portanto, o Mocha funciona principalmente como uma estrutura de teste de front end), você pode:
describe
eit
ou outro parit
dentro de umcontext
bloco que requer várias asserções / testes a serem feitos em um estado específico do aplicativoIndo com a segunda opção, você ainda pode seguir a intenção de "... agrupar [ping] um conjunto de testes contra uma funcionalidade sob o mesmo estado".
Portanto, seus testes podem ter a seguinte aparência:
Dessa forma, você pula a
feature
palavra - chave totalmente, que pode ser útil para recursos de front end específicos ou se estiver fazendo FDD (desenvolvimento orientado por recurso), o que pode ser desconfortável para alguns. Peça informações à sua equipe de desenvolvedores aqui.Advertência: nem sempre siga os padrões da indústria, imagine se modelássemos todos os nossos testes de acordo com a filosofia da Volkswagen?
fonte