IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Mockery és un framework simple i flexible per a realitzar objectes simulats (mocks ens anglès) amb PHP. Els objectes simulats són molt útils per a la realització de tests unitaris, Mockery s'utilitza sovint amb eines com PHPUnit o PHPSpec però també pot ser utilitzat en qualsevol altra testing framework amb l'objectiu de permetre la creació de test doubles

Mocking utilitza una API human readable Domain Specific Language (DSL).

El framework Laravel utilitza Mockery en la seva suite de tests.

Instal·lació

$ composer require --dev mockery/mockery

Documentació

http://docs.mockery.io/en/latest/

Mockery close

Cal recordar que sempre hem de tancar mockery un cop acabat els testos. Per això se sol utilitzar el mètode tearDown de PHPUnit:

use Mockery as m;
...

class TestCase extends PHPUnit_Framework_TestCase
{
    public function tearDown()
    {
        m::close();
    }
...
}

Expectations

Expectations permeten segrestar els objectes reals i redefinir en l'objecte simulat el comportament dels mètodes públics de l'objecte:

Un exemple amb Mockery:

public function testBasecExample() {

 $bar = Mockery::mock('App\Bar');
 $bar->shouldRecieve('doIt)->once()->andReturn('doing it!')

 $foo = new Foo($bar);
 $this->assertEquals(''doing it!',$foo->fire())
}

On fire és un mètode de Foo que executa el mètode doIt de l'objecte Bar. És igual que retorni l'objecte Bar real, el nostre objecte simulat tornarà (només al primer cop que s'executi el mètode, observeu l'ús de once()!) sempre "doing it!" i per tant el test queda isolat de l'objecte Foo queda isolat/independent de Bar. Bàsicament estem suposant o simplement ignorant si l'objecte Bar està testejat simplement ens centrem en l'objecte Bar.

És a dir podem controlar tot l'objecte simulat definint amb:

  • andReturn(): que retornarà el mètode
  • with(): quins paràmetres s'espera que rebrà el mètode
  • once()|times(n): quants cops el mètode serà cridat


Recursos:

Vegeu també

Enllaços externs