Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:cursos:laravel_8:20250531

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:cursos:laravel_8:20250531 [2023/05/31 14:31] tempwininformatica:programacion:php:cursos:laravel_8:20250531 [2023/05/31 15:07] (actual) tempwin
Línea 46: Línea 46:
                  
         // Arrange         // Arrange
-        $template = new BirthdayMailTemplate();+        //$template = new BirthdayMailTemplate();
          
 +        $personBirthday= new Person("noBirthday", "1982/18/08", "john.doe@foobar.com");
 +        $personNoBirthday = new Person("birthday", "1982/01/01", "mary.ann@foobar.com");
 +
         $people = [         $people = [
-            $personBirthday+            $personBirthday
 +            $personNoBirthday
         ];         ];
                  
         /* Patrón repository  */         /* Patrón repository  */
-        $peopleRepositoryStub->getBirthdays()-> shouldReturn($people);       +        $peopleRepositoryStub = $this->createStub(IPeopleRepository::Class);
-        $notifier = new Notifier($peopleRepositoryStub, $template, $emailSenderSpy);+
                  
-        // Act +        $peopleRepositoryStub->method("getAll")->willReturn($people);  
-        $notifier->sendGreetings();+
                  
-        // Assert+        $emailSenderSpy = $this->createMock(IEmailSender::class);
                  
 +        // Mock Spy:
 +        $emailSenderSpy->expects($this->once())->method("send")->with("birthday", "mary.ann@foobar.com");
 +              
 +        // Act
 +        $sut = new Notifier($peopleRepositoryStub, $emailSenderSpy, $dateStub);
                  
-         +        // Assert 
-        assert $emailSenderSpy->send()->shouldBeCalled(); +        $sut->sendGreetings(); 
-     +
-        $this->assertTrue(True);+
     }     }
  
Línea 92: Línea 98:
  
 PHPUnit tiene su servicio de mocks, pero también es muy popular, según el profesor, es [[https://github.com/phpspec/prophecy|prophecy]]. Otra biblioteca para mocks es [[https://github.com/mockery/mockery|mockery]]- PHPUnit tiene su servicio de mocks, pero también es muy popular, según el profesor, es [[https://github.com/phpspec/prophecy|prophecy]]. Otra biblioteca para mocks es [[https://github.com/mockery/mockery|mockery]]-
 +
 +Nueva explicación sobre aplicación, dominio e infraestructura.
 +
 +  * **Dominio**: todo lo que es propio de nuestra aplicación.
 +  * **Aplicación**: servicios o los casos de uso.
 +  * **Infraestructura**: implementaciones concretas.
 +
 +En la carpeta de infraestructura tendríamos que hacer las implementaciones propias de Symfony si lo trasladamos desde Laravel.
 +
 +Edificio de oficinas:
 +
 +  * Dominio: personas
 +  * Aplicación: trabajo que realizan las personas
 +  * Infraestructura: el edificio
 +
 +Si nos cambiamos de oficina, tanto las personas como el trabajo que hacían, sigue siendo el mismo. Lo que habría que adaptar es por ejemplo el listado de gente que puede entrar en la oficina.
 +
 +Laravel tiene que quedar en la capa de infraestructura.
 +
 +CRC cards: //Class Responsibility Collaborator//. En una tarjeta se pone el nombre de la clase, la responsabilidad y los colaboradores
informatica/programacion/php/cursos/laravel_8/20250531.1685536299.txt.gz · Última modificación: por tempwin