Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II
Continuando nossa série de artigos sobre BDD iniciada aqui, hoje trataremos da construção de cenários.
Cenários (Scenarios), são perspectivas de utilização que validam um ou mais critérios de aceitação (Acceptance Criterias).
No BDD definimos Cenários seguindo o modelo:
Dado [pré-condição]
Quando [evento]
Então [pós-condição]
Em Dado definimos tudo o que precisamos antes para Quando o evento ocorrer Então verificarmos o resultado.
Exemplo em uma User Story Completa:
Funcionalidade: Gerenciar Pessoas
Como um usuário do sistema
Eu quero gerenciar o cadastro de pessoas
Para utilizar este cadastro em outros pontos do sistema
Cenário: Adicionar Pessoa Válida
Dado que estou em listagem de pessoas
E vou para "Nova pessoa"
E defino nome com o valor "Fulano de Tal"
E defino endereco com o valor "Rua Sicrano, 32"
E defino email com o valor "fulano@exemplo.com.br"
Quando salvar o registro
Então preciso ver "Pessoa Cadastrada com Sucesso."
Ok, ok, até agora você leu bastante mas não botou a mão na massa, que tal tornamos a User Story acima executável utilizando o Cucumber?
Mas primeiro, o que é o Cucumber?
O Cucumber é uma reescrita do Story Runner do RSpec com suporte a internacionalização, ajudantes para o Webrat e um monte de outros recursos legais.
Um Story Runner como o próprio nome já diz serve para executar User Stories, algo que converge para a tal documentação executável.
Criando o Projeto de Exemplo
Obs.: Meu ambiente de desenvolvimento roda Ubuntu 9.04, talvez seja necessário adaptar alguns destes passos ao seu próprio ambiente.
rails exemplobdd
cd exemplobdd
Para instalar o cucumber e suas dependências vamos alterar o arquivo de configuração do ambiente de teste adicionando as gems necessárias.
Para instalar o Cucumber e suas dependências agora é só rodar:
rake gems:install RAILS_ENV=test
Com o Cucumber instalado precisamos agora “inicializá-lo” no nosso projeto.
script/generate cucumber
Após o comando acima estará criada no nosso projeto uma estrutura de pastas onde colocaremos nossas User Stories e passos para atender aos Cenários. Dentro da pasta features crie o arquivo gerenciar_pessoas.feature
Nossa feature criada, agora executamos
cucumber features –language pt
E obtemos a seguinte saída:
Criamos nossa feature mas ainda não definimos os passos do Cenário.
1 scenario (1 undefined) 7 steps (7 undefined)
O Cucumber é um cara legal e já nos dá uma sugestão de como defini-los, faremos agora um CTRL+C e CTRL+V da sugestão para dentro do arquivo features/step_definitions/gerenciar_pessoas_steps.rb
Ao executar o cucumber novamente
cucumber features –language pt
vemos agora que apesar de nossos passos estarem definidos ainda estão todos marcados como pendente, o primeiro passo acusa isso e os subsequentes não são executados.
1 scenario (1 pending)
7 steps (6 skipped, 1 pending)
No próximo post trataremos do conceito de TDD, passos compartilhados no Cucumber e utilização do Webrat para testes funcionais. Quem viver verá! ![]()
maio 28th, 2009 at 4:38 pm
[...] “When all other means of communication fail, try words” « Tirando a poeira Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II [...]
maio 29th, 2009 at 9:09 am
Ja tinha ouvido falar mas ver na pratica eh outra coisa.
Muito bom seus posts!
Parabens.
maio 30th, 2009 at 4:14 pm
Bacana Jeferson.
Estou brincando um pouco com Cucumber e RSpec em projeto pessoal e apanhando um pouco =)
Seus posts estão me ajudando bastante.
Só uma observação:
Tive problemas com o seguinte trecho do seu post:
cucumber features -language pt
cucumber features -l pt
ou
cucumber features –language pt
funcionou =)
Valeu,
Abraços …
maio 30th, 2009 at 4:16 pm
Já entendi o que aconteceu.
No post e no comentário os dois hifens (- -) ficam juntos!
maio 30th, 2009 at 4:48 pm
[...] Jefferson Girão “When all other means of communication fail, try words” « Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II [...]
junho 1st, 2009 at 8:11 am
[...] 1 http://jefferson.eti.br/?p=96 Parte 2 http://jefferson.eti.br/?p=105 Parte 3 [...]
julho 21st, 2010 at 12:20 pm
Buy:Prevacid.Zovirax.Actos.Valtrex.Arimidex.Synthroid.Retin-A.Accutane.Prednisolone.100% Pure Okinawan Coral Calcium.Lumigan.Petcam (Metacam) Oral Suspension.Nexium.Mega Hoodia.Human Growth Hormone.Zyban….