Testes Rápidos
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Testes Rápidos

on

  • 327 views

Testes Rápidos

Testes Rápidos

Statistics

Views

Total Views
327
Views on SlideShare
326
Embed Views
1

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 1

http://www.hanrss.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Testes Rápidos Presentation Transcript

  • 1. Tomás D’Stefano Testes Rápidos @tomas_stefanoquinta-feira, 3 de maio de 2012
  • 2. Discussão Boot e Execuçãoquinta-feira, 3 de maio de 2012
  • 3. Boot da appquinta-feira, 3 de maio de 2012
  • 4. Single Responsability Principle Nunca deve existir mais de uma razão para que uma classe mude.quinta-feira, 3 de maio de 2012
  • 5. Gemfile gem ‘rails’ gem ‘airbrake’ gem ‘cancan’ gem ‘carrierwave’ gem ‘devise’ gem ‘enumerate_it’ gem ‘foreigner’ gem ‘omniauth’ gem ‘pg’ # ... 21 gems -> Totalquinta-feira, 3 de maio de 2012
  • 6. PORO(Plain Old Ruby Objects) class OmniAuthUser def initialize(user) @user = user end def create(omni_auth_data={}) # ... end endquinta-feira, 3 de maio de 2012
  • 7. PORO(Plain Old Ruby Object) require ‘spec_helper’ describe OmniAuthUser do let(:data) { stub(:provider => :facebook, ‘...’) } describe ‘#create’ do # ... end endquinta-feira, 3 de maio de 2012
  • 8. Necessário? ⤷ time rspec spec/spec_helper.rb real 0m8.194s user 0m7.802s sys 0m1.391squinta-feira, 3 de maio de 2012
  • 9. 1º Solução - Trivial -> Require $:.unshift File.expand_path(’../../’, __FILE__) require_model :omni_auth_user require ‘app/services/cielo’quinta-feira, 3 de maio de 2012
  • 10. Tempo da 1º Solução ⤷ time rspec spec/unit_test.rb real 0m0.681s user 0m0.544s sys 0m0.138squinta-feira, 3 de maio de 2012
  • 11. Desvantagem require na mão! :quinta-feira, 3 de maio de 2012
  • 12. 2º Solução - ActiveSupport::Dependenciesquinta-feira, 3 de maio de 2012
  • 13. 2º Solução - ActiveSupport::Dependencies require ‘active_support/dependencies’ %w(app/business app/models).each do |path| ActiveSupport::Dependencies.autoload_paths.push(path) endquinta-feira, 3 de maio de 2012
  • 14. Tempo da 2º Solução ⤷ time rspec spec/unit_test.rb real 0m0.476s user 0m0.352s sys 0m0.121squinta-feira, 3 de maio de 2012
  • 15. Execuçãoquinta-feira, 3 de maio de 2012
  • 16. Execução - Cada caso é diferente. Mas evite bater no Banco de Dados.quinta-feira, 3 de maio de 2012
  • 17. Execução - Minha Dica: Se não precisa, não crie registros no Banco de Dados. Pense em cada caso.quinta-feira, 3 de maio de 2012
  • 18. Execução - Exemplo do Gateway class Account < ActiveRecord::Base def disable_show_first_steps update_attributes!(:show_first_steps => false) end endquinta-feira, 3 de maio de 2012
  • 19. Execução - Exemplo do Gateway require ‘model_test’ describe Account do describe ‘#disable_show_first_steps’ do it ‘#should disable first steps on database’ do subject.stub(:update_attributes!).with(:show_first_steps => false) subject.disable_show_first_steps end end endquinta-feira, 3 de maio de 2012
  • 20. Testes de Integração # encoding: utf-8 require ‘integration_test’ describe ‘Interface Accounts’ do it ‘should not show first steps if click Dont show first steps again’ do sign_in visit root_path page.should have_content(‘Primeiros Passos ... ... ...’) click ‘Não exibir novamente’ page.should have_content(‘Caso queira ver de novo ... ... ...’) page.should_not have_content(‘Primeiros Passos ... ... ...’) end endquinta-feira, 3 de maio de 2012
  • 21. Testes de Integração - Lentos :quinta-feira, 3 de maio de 2012
  • 22. Obrigado :)quinta-feira, 3 de maio de 2012