Используя пример, найденный здесь: https://symfony.com/doc/4.4/testing.html#unit -tests , в сочетании с примером, найденным здесь: https://symfony.com/doc/current/testing/database.html. Чтобы получить доступ к служебному контейнеру, вы должны расширить use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
и вызвать $kernel = self::bootKernel();
в функции setUp()
модульного теста.
Однако, когда я расширяю этот класс и вызываю self::bootKernel()
, все возможность использовать dump()
утеряна, и когда я вызываю print_r
или var_dump
для любого объекта, полученного, скажем, в результате создания построителя запросов, в консоли получается killed.
, потому что он слишком большой, так что это не опция при отладке объектов и больших объектов, таких как dump:
<?php
namespace App\Tests\Util;
use App\Util\Calculator;
use PHPUnit\Framework\TestCase;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class CalculatorTest extends KernelTestCase
{
public function setUp(): void
{
$kernel = self::bootKernel();
$this->entityManager = $kernel->getContainer()->get('doctrine')->getManager();
}
public function testAdd()
{
$calculator = new Calculator();
$result = $calculator->add(30, 12);
dump($result);
// assert that your calculator added the numbers correctly!
$this->assertEquals(42, $result);
}
}
Ожидаемый вывод:
$ php bin/phpunit
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.
Testing Project Test Suite
^ 42
. 1 / 1 (100%)
Time: 204 ms, Memory: 6.00 MB
OK (1 test, 1 assertion)
Вывод с self::bootKernel()
с именем:
$ php bin/phpunit
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.
Testing Project Test Suite
. 1 / 1 (100%)
Time: 471 ms, Memory: 16.00 MB
OK (1 test, 1 assertion)