Upload
marco-antonio-filho
View
366
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Apresentação feita para o FLISOL Salvador 2012.
Citation preview
BDD com RoRMarco Antonio – FLISOL 2012 – Salvador, BA
Convidados especiais:
• Cucumber
• RSpec
Um problema fácil de resolverEles sempre começam assim
A solução
0 Preciso de um gerenciador de coleções:0 Comic books;0 DVDs;0 LEGOs;0 Jogos;
Qualidadeatende aos requisitos
Comunicação
Ling
uag
emCliente Desenvolvedor
Comunicação
Histórias
Cliente Desenvolvedor
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
proposição de valor
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
papel
História #123
Para conseguir mais informações de uma coleção de revistasComo um usuárioEu deveria ver um relatório das minhas revistas por tipo.
funcionalidade
Qualidadefuncionar como esperado
Test Driven Development
Faça o teste
passar
Refatore
Teste que
falha
Testes de aceitação
História #123
Apresentar todos os gêneros de revistas com a soma realDeveria mostrar o # total de revistasDeveria possuir o link para nova revistaDeveria possuir o link para todas as revistas
Wireframes
Behavior Driven Development
Teste unitário
que falha
Aceitação que falha
Faça o teste
passar
Refatore
Escolhendo as armasRuby on Rails, Cucumber, RSpec, Webrat
Mãos à obraConfigurando o ambiente
Instalação
0 Rails:
0 RSpec:
0 Cucumber
$ gem install rails
$ gem install rspec
$ gem install cucumber
Lembre-se de ter a última versão do ruby
instalado.
Criando uma nova aplicação
0 Para criar uma nova aplicação Rails é simples:
0 Pronto! Para testar é executar:
0 No navegador acesse http://localhost:3000
$ rails new manga_collection -T
$ cd manga_collection$ rails s
Gerenciando os pacotes
0 Altere o arquivo Gemfile responsável pelos gerenciamento de pacotes com as seguintes linhas:
0 Precisamos instalar as novas dependências:
group :test do gem 'database_cleaner', '0.7.2' gem 'rspec-rails', '2.9.0' gem 'cucumber-rails', '1.3.0' gem 'webrat', '0.7.3'end
$ bundle install
O ambiente de testes
0 Vamos instalar o RSpec e o Cucumber na aplicação
$ rails g rspec:install$ rails g cucumber:install
Hora de entender
Adicionando funcionalidade
Rails scaffold
0 Como exemplo vamos usar a funcionalidade de scaffold para modelar o sistema.
$ rails g scaffold manga name:string volume:integer genre:string
Escreva o pepino
Veja falhar
0 Execute:
0 A princípio ele vai apenas informar que existem passos não definidos;
0 Crie um arquivo .rb em features/step_definitions;0 Implemente os passos e veja os testes falharem;
$ cucumber features/
manga.rb
cucumber features/
Faça o teste passar
0 Implementar um controle para relatórios de mangá;0 Página html.erb com as expectativas no wireframe;0 Rota apontando para a página;
Enough is enough!!!
Refatorar sem medo
0 Princípio: Encontrar code smells0 Exemplos:
0 Variáveis temporárias;0 Longos métodos;0 Longas classes;
0 Os testes servem de suporte para refatoração!
Cucumber ou RSpec?
AMBOS