Para instalar, considerando obviamente que você já tem o Rails instalado, digite
gem sources -a http://gems.github.com sudo gem install cucumber webrat rspec rspec-rails
No diretório raiz do seu projeto, digite
script/generate cucumber --rspec
E o suporte ao Cucumber será adicionado à sua aplicação, assim como uma pasta /features.
Na pasta features, cria um arquivo com extensão .feature. Por exemplo, manage_users.feature.
Vamos editar o arquivo e começar com a definição da funcionalidade (ou user story, se preferir):
Feature: Manage users
In order to manage users
Visitors should be able to
sign up and change their own stuff
Atenção para a tabulação. Ela é fundamental para o bom funcionamento da ferramenta.
Em seguida, vamos adicionar os cenários possíveis que se aplicam a essa funcionalidade. Nesse caso podemos pensar nas situações que podem ocorrer para gerenciarmos usuários. Futuramente podemos adicionar mais situações que não foram previstas inicialmente e situações que estão causando comportamentos inesperados na sua aplicação.
Scenario: Add new user
Given the Visitor wants to signup
When the Visitor clicks signup
Then open the signup page
Novamente, atenção para o espaçamento no início de cada linha.
Execute o comando cucumber e você vai ver uma saída parecida com essa:
Feature: Manage users
In order to manage users
Visitors should be able to
sign up and change their own stuff
Scenario: Add new user # features/manage_users.feature:6
Given the Visitor wants to signup # features/manage_users.feature:7
When the Visitor clicks signup # features/manage_users.feature:8
Then open the signup page # features/manage_users.feature:9
1 scenario (1 undefined) 3 steps (3 undefined) 0m0.297s You can implement step definitions for undefined steps with these snippets:
Given /^the Visitor wants to signup$/ do pending end When /^the Visitor clicks signup$/ do pending end Then /^open the signup page$/ do pending end
O texto em amarelo significa que o teste (step na documentação do Cucumber) ainda não foi implementado.
Dentro da pasta features, tems uma chamada step_definitions. Nessa pasta vamos criar um arquivo manage_users.rb, copie o primeiro trecho em amarelo (Given … end) e cole no arquivo. Apague a linha onde está escrito pending e escreva seu código de teste.
Ele vai ficar assim:
Given /^the Visitor wants to signup$/ do #simula a visita do cliente à página principal, onde temos um link escrito "Quero me cadastrar" get '/' end
Ao executar cucumber novamente, veremos a seguinte saída:
(...) Scenario: Add new user # features/manage_users.feature:6
Given the Visitor wants to signup # features/manage_users.feature:7
When the Visitor clicks signup # features/manage_users.feature:8
Then open the signup page # features/manage_users.feature:9
Vemos a linha do step que escrevemos na cor verde, ou seja, o teste passou.
O modo correto de se trabalhar com Cucumber é, assim como em TDD, escrever o teste, dentro de um step, executar e vê-lo falhar. Ao falhar, a linha será apresentada em vermelho. Programe somente o necessário para o teste passar (ficar verde), e passe imediatamente para o próximo step.
Existem formas de se trabalhar com Cucumber em outros idiomas, gerar documentação em HTML e PDF e outros macetes, mas isso vai ficar para um próximo post.
Enjoy
Escrito por Developer
Escrito por Developer
Escrito por Developer
