Я пытаюсь создать тест PHPunit для доступа к сервисам из контейнера в symfony. Для этого я звоню self::bootKernel
в setUpBeforeClass
. В первом тесте self::$kernel
в порядке, но во втором тесте self::$kernel
- ноль.
Это простой тест для проверки:
<?php
namespace App\Tests;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class KernelTest extends WebTestCase
{
public static function setUpBeforeClass(): void
{
self::bootKernel();
}
public function testMethod1(){
$this->assertNotNull(self::$kernel);
}
public function testMethod2(){
$this->assertNotNull(self::$kernel);
}
}
. вывод:
$ bin/phpunit tests/KernelTest.php
PHPUnit 7.5.18 by Sebastian Bergmann and contributors.
Notice: Undefined index: warnings in /app/vendor/phpunit/phpunit/src/TextUI/TestRunner.php on line 334
Warning: Invalid argument supplied for foreach() in /app/vendor/phpunit/phpunit/src/TextUI/TestRunner.php on line 334
Testing App\Tests\KernelTest
.F 2 / 2 (100%)
Time: 58 ms, Memory: 16.00 MB
There was 1 failure:
1) App\Tests\KernelTest::testMethod2
Failed asserting that null is not null.
/app/tests/KernelTest.php:19
FAILURES!
Tests: 2, Assertions: 2, Failures: 1.
Как видите, второй тест не проходит утверждение.
Это версия, которую я использую в phpunit:
phpunit/phpunit 8.5.2 The PHP Unit Testing framework.
symfony/phpunit-bridge v5.0.2 Symfony PHPUnit Bridge
Что Я делаю не так? Должен ли я загружать ядро в каждом тесте? Я хотел бы загрузить его только один раз.