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

 

Komentáře

Vaše reakce na PHPUnit - příklad mockování (odstraňování závislostí)

Související obsah

php

programovani

testovani

phpunit

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.