Testes Rápidos

254 views
218 views

Published on

Testes Rápidos

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
254
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testes Rápidos

  1. 1. Tomás D’Stefano Testes Rápidos @tomas_stefanoquinta-feira, 3 de maio de 2012
  2. 2. Discussão Boot e Execuçãoquinta-feira, 3 de maio de 2012
  3. 3. Boot da appquinta-feira, 3 de maio de 2012
  4. 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. 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. 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. 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. 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. 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. 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. 11. Desvantagem require na mão! :quinta-feira, 3 de maio de 2012
  12. 12. 2º Solução - ActiveSupport::Dependenciesquinta-feira, 3 de maio de 2012
  13. 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. 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. 15. Execuçãoquinta-feira, 3 de maio de 2012
  16. 16. Execução - Cada caso é diferente. Mas evite bater no Banco de Dados.quinta-feira, 3 de maio de 2012
  17. 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. 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. 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. 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. 21. Testes de Integração - Lentos :quinta-feira, 3 de maio de 2012
  22. 22. Obrigado :)quinta-feira, 3 de maio de 2012

×