Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Diseño emergente con phpspec (PHPmad)

Diseño emergente con phpspec (PHPmad)

Introducción a phpspec, una librería PHP para realizar specBDD.
Repasaremos también cómo puede ayudarnos a detectar posibles errores en el diseño de nuestras clases.

Francisco Santamaria

October 22, 2014
Tweet

More Decks by Francisco Santamaria

Other Decks in Programming

Transcript

  1. 2 escuelas diferentes Chicago / Clásica • Chequeo del resultado

    • Estado del objeto Londres / Mockists • Paso de mensajes • Comunicación entre objetos
  2. The key in making great and growable systems is much

    more to design how its modules communicate rather than what their internal properties and behaviors should be. Alay Kay [Kay98] Messaging “ ”
  3. ¿Qué es phpspec? • Port de rspec a PHP •

    PHP >= 5.3.3 • Prophecy como librería de mocking • Muy frustrante si se utiliza para hacer cosas para las que no fue diseñado
  4. phpspec - Flujo de trabajo 1. Se describe la clase

    2. Creación de ejemplos 3. Ejecución de los ejemplos 4. Implementación de código 5. Más ejemplos, refactorización ...
  5. phpspec - Matchers • Identidad • Comparación • Throw •

    Tipo • StringStart • ArrayKey • Estado del objeto • Count • Escalar • Inline • StringEnd • Regex
  6. Doubles - Fake • Funcional pero no para producción •

    Requiere una implementación manual • Rápida Ej: BBDD en memoria, sistema de ficheros virtuales, etc...
  7. Evitar la fragilidad 1. Evita la sobreespecificación 2. No uses

    mocks para queries, utiliza stubs 3. No hagas mocking de librerías de terceros 4. Evita especificar secuencia de llamadas
  8. Referencias phpspec documentation On messaging - Alan Kay Design How

    Your Objects Talk Through Mocking - Konstantin Kudryashov Emergent Design with PhpSpec - Marcello Duarte Why Your Test Suite Sucks - Ciaran McNulty Testing para aplicaciones Symfony2 - Fernando Arconada My top ten favourite PhpSpec limitations - Marcello Duarte Understanding PhpSpec - Peter Suhm Mocks Aren't Stubs, Fakes, Dummies or Spies - Dave Marshall Named Constructors in PHP - Matthias Verraes Propecy Repository To mock or not to mock - Jordi Llonch & Eloi Poch PHPSpec 2 - The only Design Tool you need - - Kacper Gunia
  9. Imágenes From Growing Object-Oriented Software by Nat Pryce and Steve

    Freeman Terminator 2: Judment Day - TriStar Pictures Batman Returns - Warner Brothers Una cuestión de equilibrio