Symfony tesztek
Symfony-ban unit tesztre és funkcionális tesztre nézünk egy-egy példát. |
|
Ebben a unit teszt példában egy service egy funkcióját teszteljük le. A setUp-ban inicializáljuk a mysql és a mongodb kapcsolatunkat, hogy a service függvényünknek átadhassuk paraméterként. A testGenerate függvényben, a megfelelő paraméterek átadásával meghívjuk a funkciónkat. A assertEquals első paramétere lesz az elvárt eredmény ami ha egyezik a második paraméterrel, amit vissza kaptunk a funkciónktól, akkor helyes lesz a teszt:<?php // testService/ScheduleServiceTest.php namespace App\tests\Service; use App\Service\ExampleService; use PHPUnit\Framework\TestCase; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Doctrine\ODM\MongoDB\DocumentManager as DocumentManager; class ScheduleServiceTest extends KernelTestCase { /** * @var \Doctrine\ORM\EntityManager */ private $entityManager; /** * @var DocumentManager */ private $documentManager; protected function setUp() { $kernel = self::bootKernel(); $this->entityManager = $kernel->getContainer()->get('doctrine')->getManager(); $this->documentManager = $kernel->getContainer()->get('doctrine_mongodb')->getManager(); } /** * @group generate */ public function testGenerate() { $em = $this->entityManager; $dm = $this->documentManager; $year = "2019"; $userId = 1; $exampleService = new ExampleService($em, $dm, $year, $userId); $result = $exampleService->generate(); $this->assertEquals("success", $result); } } Funkcionális tesztre ebben a példában egy listának egy elemét kérdezünk le és ha 200-al sikeresen lefut, akkor jónak számít a teszt. <?php // tests/Controller/CityControllerTest.php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class CityControllerTest extends WebTestCase { private $client = null; public function setUp() { $this->client = static::createClient(); } public function testShowPost() { $this->client->request('GET', '/api/city/1'); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); } } A .env.test fájlban beállíthatunk teszt adatbázist és akkor nem az éles adatbázisunkat szemeteljük tele. A következő paranccsal lehet lefuttatni az összes tesztet: # php bin/phpunit Csak a group annotációval megjelölt csoportba tartozó tesztek futtatása: # php bin/phpunit --group generate Egy teszt lefuttatása: # php bin/phpunit --filter testGenerate Teszt csoportok vagy tesztek listája: # php bin/phpunit --list-tests # php bin/phpunit --list-groups Olvasnivaló: https://symfony.com/doc/current/testing.html |
2020.12.12. |
Figyelem! Az itt olvasható leírások, nem teljesek és nem biztos, hogy pontosak. Nem
frissülnek folyamatosan, ezért nem mindegyik használható az aktuális verziójú rendszerekben. Mindenki saját
felelősségére használja az itt található ötleteket. Az esetleges károkért nem vállalunk felelősséget.