PHPUnit - příklad mockování (odstraňování závislostí)

PHPUnit - příklad mockování (odstraňování závislostí)

V dalším článku o testování pomocí PHPUnit je základně podíváme na tzv. mockování - odstraňování závislostí. A to jak jinak než na praktickém příkladu.

 

Pokud testovaná třída např. Unit obsahuje kontstruktor pro Nette databázi:

    public function __construct(Nette\Database\Context $db)
    {
        $this->db = $db;
    }


A my ji budeme chtít testovat:

    public function testXyz()
    {
        $unit = new Unit();
        ....
    }



Tak dostaneme po spuštění testu pochopitelně chybu:

There was 1 error:

1) App\Model\UnitTest::testXyz
ArgumentCountError: Too few arguments to function App\Model\Unit::__construct(), 0 passed in ....UnitTest.php on line 15 and exactly 1 expected

/var/www/.../app/model/Unit.php:13
/var/www/.../tests/UnitTest.php:15

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.



Řešením je vytvořit mock. Podstrčíme tedy mockem argument pro databázi takto:

    $dbMock = $this->createMock(Nette\Database\Context::class);
    $unit = new Unit($dbMock);
    ...


A problém v konstruktoru se tím vyřeší...

 

Odkazy

Zdrojové soubory na githubu

 

Jak se ti článek líbil?

Komentáře (0)

Přidat komentář