Rigor Talks – PHP – #14 – Refactor Use Case II (Spanish)

Hola Amigos del Rigor! Seguimos con la serie sobre los videos de refactoring. En éste, vamos a testear parte del Application Service que extrajimos en el video anterior. Aprovecharemos para mejorar el código con algunos casos no contemplados en el código original.

He creado una lista de reproducción pública con los videos que vaya publicando. La podéis encontrar aquí. Espero que os guste!

#MayTheRigorBeWithYou

  • Gabriel

    Hola Carlos, muy bueno! Saludos desde Argentina.

    • Carlos Buenosvinos Zamora

      Gracias Gabriel! Un abrazo!

  • Jordi Casadevall

    Antes de nada felicidades por éste y también el resto de videos. Tengo dos dudas/comentarios:

    Me gustan este tipo de mocks más claros que usar el Mock Builder del PHPUnit, pero entonces tienes que prescindir del type tinting para las dependencias, cosa que me genera dudas más aun teniendo en cuenta que con el PHP7 hay más type hinting…

    La otra duda es sobre los tests, veo que aquí testeas que el código se ejecute ok y que se lanzan las excepciones en las cláusulas de guarda pero no se testea lo que retorna el método o si hace las llamadas a las dependencias con los parámetros adecuados. Esto es porqué formará parte de otro video?

    Un saludo!

    • Carlos Buenosvinos Zamora

      Hola Jordi! Gracias por el comentario :). Te respondo.

      1. Yo tb prefiero este tipo de mocks porque para mí son más fáciles de reutilizar en otros tests, les puedes poner un nombre más semántico, en términos de rendimiento van super rápido (los mocks de mockery le meten chicha), etc. Sobre el type hinting, mírate el video #15, porque ahí comento la manera para no saltarte el Type Hinting. Básicamente es extender de la clase y sobreescribir los métodos que te den por saco. Aunque tb puedes optar por refactorizar tu código para que use interfaces en vez de clases concretas.

      2. Tienes todo el testing cubierto en el video #15. El objetivo de este test, es comprobar que la lógica de negocio del caso de uso es la correcta. No estoy testeando las dependencias, ni las quiero testear. Haré mención especial en otro video, sobre lo que testear y lo que no.

      He respondido a tus preguntas?

      Un abrazo!
      Carlos

      • Jordi Casadevall

        Ok gracias por las respuestas! Sobre lo de testear las dependencias, me refería a testear no la dependencia, sinó que se llamen con los parámetros correctos. En breve ya me miro el 15!

        Saludos!

        Jordi

        • Carlos Buenosvinos Zamora

          Qué significa “con los parámetros correctos”? Haz referencia al código y así puedo entenderlo mejor :)

          • Jordi Casadevall

            Me refiero por ejemplo a testear que la dependencia $this->enventDispatcher se llame, y con los parámetros ReviewEvent correcto y ReviewEvents::UPDATED. Ya que si quitas la llamada, el test pasaria igualmente A lo mejor en el video 15 ya lo explicas! ;) En breve lo miro.

          • Carlos Buenosvinos Zamora

            Entendido. El video #16 es para ti :)

          • Jordi Casadevall

            Jeje, gracias en breve me lo miro!