Top Banner

Click here to load reader

22

Testes Rápidos

Jun 29, 2015

Download

Technology

SuccesSoft LTDA

Testes Rápidos
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Testes Rápidos

Testes Rápidos Tomás D’Stefano @tomas_stefano

quinta-feira, 3 de maio de 2012

Page 2: Testes Rápidos

DiscussãoBoot e Execução

quinta-feira, 3 de maio de 2012

Page 3: Testes Rápidos

Boot da app

quinta-feira, 3 de maio de 2012

Page 4: Testes Rápidos

Single Responsability Principle

Nunca deve existir mais de uma razão para que uma classe mude.

quinta-feira, 3 de maio de 2012

Page 5: Testes Rápidos

Gemfile

gem ‘rails’gem ‘airbrake’gem ‘cancan’gem ‘carrierwave’gem ‘devise’gem ‘enumerate_it’gem ‘foreigner’gem ‘omniauth’gem ‘pg’# ... 21 gems -> Total

quinta-feira, 3 de maio de 2012

Page 6: Testes Rápidos

PORO(Plain Old Ruby Objects)

class OmniAuthUser def initialize(user) @user = user end

def create(omni_auth_data={}) # ... endend

quinta-feira, 3 de maio de 2012

Page 7: Testes Rápidos

PORO(Plain Old Ruby Object)

require ‘spec_helper’describe OmniAuthUser do let(:data) { stub(:provider => :facebook, ‘...’) } describe ‘#create’ do # ... endend

quinta-feira, 3 de maio de 2012

Page 8: Testes Rápidos

Necessário?

⤷ time rspec spec/spec_helper.rb real 0m8.194suser0m7.802ssys 0m1.391s

quinta-feira, 3 de maio de 2012

Page 9: Testes Rápidos

1º Solução - Trivial -> Require

$:.unshift File.expand_path(’../../’, __FILE__)require_model :omni_auth_userrequire ‘app/services/cielo’

quinta-feira, 3 de maio de 2012

Page 10: Testes Rápidos

Tempo da 1º Solução

⤷ time rspec spec/unit_test.rbreal 0m0.681suser0m0.544ssys 0m0.138s

quinta-feira, 3 de maio de 2012

Page 11: Testes Rápidos

Desvantagem

require na mão! :\

quinta-feira, 3 de maio de 2012

Page 12: Testes Rápidos

2º Solução - ActiveSupport::Dependencies

quinta-feira, 3 de maio de 2012

Page 13: Testes Rápidos

2º Solução - ActiveSupport::Dependencies

require ‘active_support/dependencies’%w(app/business app/models).each do |path| ActiveSupport::Dependencies.autoload_paths.push(path)end

quinta-feira, 3 de maio de 2012

Page 14: Testes Rápidos

Tempo da 2º Solução

⤷ time rspec spec/unit_test.rbreal 0m0.476suser0m0.352ssys 0m0.121s

quinta-feira, 3 de maio de 2012

Page 15: Testes Rápidos

Execução

quinta-feira, 3 de maio de 2012

Page 16: Testes Rápidos

Execução - Cada caso é diferente. Mas evite bater no Banco de Dados.

quinta-feira, 3 de maio de 2012

Page 17: Testes Rápidos

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

Page 18: Testes Rápidos

Execução - Exemplo do Gateway

class Account < ActiveRecord::Base def disable_show_first_steps update_attributes!(:show_first_steps => false) endend

quinta-feira, 3 de maio de 2012

Page 19: Testes Rápidos

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 endend

quinta-feira, 3 de maio de 2012

Page 20: Testes Rápidos

Testes de Integração

# encoding: utf-8require ‘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 ... ... ...’) endend

quinta-feira, 3 de maio de 2012

Page 21: Testes Rápidos

Testes de Integração - Lentos :\

quinta-feira, 3 de maio de 2012

Page 22: Testes Rápidos

Obrigado :)

quinta-feira, 3 de maio de 2012