Dito Tech Talk RSpec

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites

    Dito Tech Talk RSpec - Presentation Transcript

    1. Dito TechTalk: Behavior Driven Development (BDD) rSpec Dito – Idéias & Soluções Novembro 2008
    2. Behavior Driven Development Dan North’s response to TDD (Test-Driven Development) Testar primeiro! Por que? para programar com o teste em mente BDD = TDD com vocabulário focado no comportamento (behavior) e não testes.
    3. Behavior Driven Development com rSpec Cada característica (feature) é uma “story” Story As a ... [role] I want to ... [some action] So that ... [business value!]
    4. Behavior Driven Development com rSpec Scenarios G W T – Given, When, Then Scenario: título Given: [um contexto] And: opcional When: evento Then: resultado Scenario: outro variante...
    5. G W T
      • Given
      • Setup pre requisitos
      • Setup estado
      • Exemplo:
      • Given a user called Dave
      • And Dave is logged in
      • When
      • Ações feitas pelo ator
      • Exemplo:
      • When I click the ‘profile’ link
      • When I enter my new password and confirmation
      • And click the ‘Change my password’ button
      • Then
      • Define o resultado das suas ações
      • Exemplo:
      • Then I should see my profile page
      • And it should list how many items I have bought
    6. Processo
      • Escrever uma “Story”
      • Escrever especificações para os controllers
      • Escrever os controllers
      • Escrever especificações para os models
      • Escrever os models
      • Executar a “Story”
    7. Instalando rSpec
      • Para testar apenas código Ruby sem aplicação Rails basta executar o comando:
      • gem install rspec
      rSpec on Rails : Versão 1.1.4 o rSpec utiliza o Github , vamos apenas clonar seu repositório com os comandos: cd vendor/plugins git clone git://github.com/dchelimsky/rspec.git cd rspec git checkout 1.1.4 cd .. git clone git://github.com/dchelimsky/rspec-rails.git cd rspec-rails git checkout 1.1.4 cd ../../../
    8. rSpec on Rails
      • Para criar um diretório (spec) com todos os arquivos necessários para o Rails utilizar o rSpec basta executar o generate:
      • script/generate rspec
    9. Aplicação
      • Aplicando rSpec no projeto pilates
      • Requisitos básicos:
        • Uma pessoa pode ter vários lancamentos
        • Uma pessoa deve ter um nome, login, email e uma senha
      • Temos então:
        • Um “usuário” com um “name” relacionado a vários “tasks”
    10. Modelo Usuário Para criar o modelo usuário temos generators do próprio rSpec. script/generate rspec_model Usuario name:string login:string email:string crypted_password:string rake db:migrate Junto com este model foi gerado um arquivo de teste para o modelo, no dir: “spec/models/usuario_spec.rb” É neste arquivo que vamos escrever as especificações . Uma especificação pode ser escrita usando o método it , que deve estar associado a um outro método, describe . Com eles podemos validar um contexto.
    11. Especificações do Usuário O método describe Usuario usa fixtures, com isso temos que adicionar alguns itens ao arquivo: “spec/fixtures/usuarios.yml” Nosso método it usa lambda que especifica que o usuario existe, é invalido sem um name , um login , um email , e um crypted_password . Também especifica que deve possuir diversos taks . Em um método privado create_usuario , fazemos exatamente isso, criamos um usuario com um name .
    12. Fixtures spec/fixtures/usuarios.yml
    13. Rodando os Testes - rake spec Rodando os Testes Rodando os Testes
    14. Models app/models/usuario.rb
      • Adicionamos as validações precisas no modelo usuario
      • Adicionamos também um relacionamento com o modelo task que ainda não existe
    15. Modelo Task
      • Vamos criar o modelo Task com rspec model
      • script/generate rspec_model Task titulo:string usuario:references
      • rake db:migrate
      • Requesitos do modelo Task:
        • Um Task pertence a um Usuario
        • Um Task tem deve ter um titulo, usuario,
    16. Especificações do Task As especificações do task são parecidas com a do usuario. Como por exemplo o método describe também usa fixtures, com isso temos que adicionar alguns itens ao arquivo: “spec/fixtures/tasks.yml” Estamos especificando que o task existe, é invalido sem um titulo. Também especifica que um task pertence a um usuario . Em um método privado create_task , criamos um task com um titulo , e relacionado a um usuario .
    17. Fixtures spec/fixtures/tasks.yml
    18. Models app/models/task.rb
      • Adicionamos as validações precisas no modelo task
      • Adicionamos também um relacionamento com o modelo usuario.
    19. Associações Task deve estar associado a um usuario script/generate rspec_model Task titulo:string usuario:references Temos no banco:
    20. Rodando os Testes Rodando os Testes Rodando os Testes - rake spec
    21. DEPRECATION WARNING
    22. Proporção de Testes em relação ao código - rake stats
      • Temos 77 linhas de testes para 493 linhas de códigos, uma proporção muito pobre de 1:0,2
      • No site brasigo.com.br trabalham com uma proporção na faixa de 3 linhas de teste para cada linha de código, ou seja 1:3
    23. Test::Unit para rSpec class DogTest def test_ bark assert_ algo def setup def teardown describe Dog it “should bark” object.should be _algo before (:each) { } after (:each) { }
    24. Vantagens do rSpec em relação ao Test::Unit
      • Linguagem de implementação das especificações é mais natural e flui melhor.
      • O relatório gerado descreve os exemplos criados com mais clareza.
      • A divisão de arquivos e diretório é muito parecida com a divisão natural do Rails entre controllers, models, views, e helpers.
      • Existe uma integração com o AutoTest assim como o Test::Unit.
      • http://dannorth.net/introducing-bdd
      • http://dannorth.net/whats-in-a-story
      • http://blog.improveit.com.br/articles/2008/01/23/rspec-e-textmate
      • http://www.benmabey.com/2008/05/10/slides-and-code-from-my-bddrspec-presentation/
      • http://www.slideshare.net/rahoulb/telling-stories-with-rspec-presentation
      • http://blog.davidchelimsky.net/2008/6/16/slides-
      • http://www.joesniff.co.uk/ruby/telling-a-good-story-rspec-stories-from-the-trenches.html
      • http://kpumuk.info/category/ruby-on-rails/
      • http://simplesideias.com.br/usando-o-rspec-para-testar-sua-aplicacao-rails-modelos/#comment-67581
      • http://rspec.info/documentation/test_unit.html
      • http://www.nabble.com/alias-:calling-:lambda-td12789662.html
      Referências

    + guest49d83b2guest49d83b2, 11 months ago

    custom

    605 views, 2 favs, 1 embeds more stats

    Dito Tech Talk about Rspec
    by Breno S. da Mata Jr.

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 605
      • 601 on SlideShare
      • 4 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 0
    Most viewed embeds
    • 4 views on http://nouseforanamebybrino.blogspot.com

    more

    All embeds
    • 4 views on http://nouseforanamebybrino.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories