Está en la página 1de 1

Práctica 2. Crear Mock de Filtro de Facturas.

Paso 1.

Modificar en la clase InvoiceFilter:

- Agregar a la clase InvoiceFilter la propiedad dao de clase InvoiceDao


- Agregar un constructor de InvoiceFilter para que reciba como parámetro al objeto InvoiceDao y
lo ponga en this.dao;
- Modificar la función filter de InvoiceFilter para que no cree el objeto de clase InvoiceDao, sino
que tome la propiedad dao que se agregó a la clase InvoiceFilter y cuyo valor se recibe como
parámetro en el constructor de la clase InvoiceFilter.

Paso 2.

Crear la función de prueba TestFiltrarFacturas

function TestFiltrarFacturas() {
/*crear dos objetos factura i1 e i2 con los valores (“M”, 20.0) y (“A”,
300.0) y ponerlas en el arreglo de facturas $list */
$i1 = new Factura(“M”, 20.0);
$i2 = new Factura(“A”, 300.0);
$list = {i1, i2};

/* hacer el mocking de la clase InvoiceDao para el método all */


$dao = $this->getMockBuilder(InvoiceDao::class)
->setMethods([‘all´])
->getMock();

/* poner la conducta que queremos del mock: hacer que se ejecute una vez
el método all() y que regrese el valor */
$dao->expects($this->once())
->method(‘all’)
->will($this->returnValue($list);

/* crear ahora el objeto de clase InvoiceFilter para probar la función filter


que ejecutará al método mockeado all de la clase mockeada InvoiceDao */
$f = new InvoiceFilter($dao); /* hacer que el constructor reciba la clase
mockeada */
$result = $f.filter();

/* assertions */
assertEquals(1, $result);
assertEquals(i1, $result.get(0));
}

También podría gustarte