É engraçado como tudo é questão de treino e disciplina. Levei um tempo para me acostumar com TDD, Vim e não poderia ser diferente com testes funcionais, sendo mais especifico, Cucumber.
Até o momento, só tinha usado cucumber em projetos web. E quando voltei a desenvolver o rubygems_snapshot, senti falta de algo para testar funcionalmente. Baseado no pik, montei um esquema simples para validar qualquer aplicação de linha de comando.
Como instalar
Basicamente, será necessário (fontes via gist):
- rake para executar o cucumber
- env_terminal.rb
- terminal_steps.rb
Dado que você tem cucumber instalado, com o esquema da pasta “features”.
- Copie o cucumber.rake para a raiz.
- Copie o env_terminal.rb para a pasta features.
- Copie o terminal_steps.rb para a pasta features/step_definitions/terminal_steps.rb.
- Edite o env.rb incluindo (pode ser no começo):
require "env_terminal"
- Dentro do Rakefile, pode ser no final mesmo, adicione:
load "cucumber.rake"
Como usar
Todas features:
rake cucumber
Features com a tag @wip, também conhecida como Work in Progress.
rake cucumber:wip
Informações Extras
Caso precise de mais informações, você tem a opção de ver a saída dos comandos, executando a rake assim:
rake cucumber show_output=true
ou
rake cucumber:wip show_output=true
No caso do snapshot, tive a necessidade de “modificar” o comando gem toda vez que era executado, ou melhor, passar um parâmetro para controlar o ambiente. Dentro do env_terminal.rb, existe o método gsub_command, nele você pode “redefinir” comandos, caso necessite.
Gostei, quero mais!
A solução acima, é bem “caseira”. Para projetos simples com funcionalidades simples, funciona bem.
Caso queira algo mais robusto, você tem a opção da gem Aruba.
Tem este post como introdução:

