• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Curso TDD Ruby on Rails #04: Factorías de objetos
 

Curso TDD Ruby on Rails #04: Factorías de objetos

on

  • 1,357 views

Lección 04 del curso de TDD en Ruby on Rails:

Lección 04 del curso de TDD en Ruby on Rails:
Factorías de objetos

Statistics

Views

Total Views
1,357
Views on SlideShare
1,350
Embed Views
7

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 7

http://www.slideshare.net 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

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

    Curso TDD Ruby on Rails #04: Factorías de objetos Curso TDD Ruby on Rails #04: Factorías de objetos Presentation Transcript

    • CURSO DE TESTING OSL 12 – 16 DE ABRIL 2010 Factorías de objetos Alberto Perdomo Web: http://albertoperdomo.net Email: alberto.perdomo@aentos.es Twitter: @albertoperdomo http://www.aentos.com
    • PROBLEMAS DE LOS FIXTURES: DATOS ESPECÍFICOS → A veces hacen falta datos específcos para ciertas pruebas pero están disponibles para todos los tests. → Ejemplo: Hemos implementado la gestión de cobros y para probar los casos extremos necesitamos una instancia de usuario sin saldo sufciente.
    • PROBLEMAS DE LOS FIXTURES: MANTENIBILIDAD → incómodos → difíciles de mantener → a menudo las relaciones acaban “rotas”.
    • PROBLEMA RESUELTO: FACTORÍAS DE OBJETOS → compatibles con los fxtures → usa lo que más te guste o lo que mejor se adapte a la situación → ¡extremadamente fexibles!
    • VARIAS ALTERNATIVAS Factory Girl → http://github.com/thoughtbot/factory_girl Machinist → http://github.com/notahat/machinist Object daddy → http://github.com/fogic/object_daddy Fixture Replacement → http://github.com/smtlaissezfaire/fxturereplacement y otras...
    • FACTORY GIRL: DEFINICIÓN Se suelen defnir → todas dentro del mismo fchero → test/factories.rb → o en fcheros separados test/factories/user.rb etc. # This will guess the User class Factory.define :user do |u| test/factories.rb u.first_name 'John' spec/factories.rb u.last_name 'Doe' test/factories/*.rb u.admin false end spec/factories/*.rb
    • FACTORY GIRL: AVANZADO Lazy attributes Factory.define :user do |u| # ... u.activation_code { User.generate_activation_code } end Dependent Attributes Factory.define :user do |u| u.first_name 'Joe' u.last_name 'Blow' u.email {|a| "#{a.first_name}.#{a.last_name}@example.com".downcase } end Factory(:user, :last_name => 'Doe').email # => "joe.doe@example.com"
    • FACTORY GIRL: AVANZADO Asociaciones Factory.define :post do |p| # ... p.author {|author| author.association(:user, :last_name => 'Writely') } end Secuencias # Defines a new sequence Ejemplo: uso de sequence para el Factory.sequence :email do |n| email dentro de la factoría de usuarios "person#{n}@example.com" end Factory.define :user do |f| Factory.next :email f.email { Factory.next(:email) } # => "person1@example.com" end Factory.next :email # => "person2@example.com"
    • FACTORY: USO BÁSICO user = Factory(:user)
    • FACTORY GIRL: USO AVANZADO # Returns a User instance that's not saved user = Factory.build(:user) # Returns a saved User instance user = Factory.create(:user) # Returns a hash of attributes that can be used to build a User instance: attrs = Factory.attributes_for(:user) # Returns an object with all defined attributes stubbed out: stub = Factory.stub(:user) # Same as Factory.create :user: user = Factory(:user) # Build a User instance and override the first_name property user = Factory.build(:user, :first_name => 'Joe') user.first_name # => "Joe"
    • ¿PREGUNTAS?