Я использую Symfony 4 и у меня есть функциональный тест, где мне нужен доступ к моей базе данных. Но когда это выполнено:
$repository = $this->getDoctrine()->getRepository(User::class);
У меня есть такой вывод:
App \ Тесты \ Controller \ AppControllerTest :: testPostSubmit
Ошибка: вызов неопределенного метода App \ Tests \ Controller
\ AppControllerTest :: getDoctrine ()
Это мой phpunit.xml.dist
:
<?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.1/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
>
<php>
<ini name="error_reporting" value="-1" />
<env name="KERNEL_CLASS" value="App\Kernel" />
<env name="APP_ENV" value="test" />
<env name="APP_DEBUG" value="1" />
<env name="APP_SECRET" value="s$cretf0rt3st" />
<env name="SHELL_VERBOSITY" value="-1" />
<env name="DATABASE_URL" value="mysql://root:root@127.0.0.1:3306/haytest" />
<!-- define your env variables for the test env here -->
</php>
<testsuites>
<testsuite name="Project Test Suite">
<directory>tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./src/</directory>
</whitelist>
</filter>
<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
</listeners>
</phpunit>
А это мой тест (он еще не закончен):
/**
* Test the submitting of posts
*/
public function testPostSubmit()
{
$client = static::createClient();
$repository = $this->getDoctrine()->getRepository(User::class);
if (!$this->getUser()) {
if (!$repository->find(1)) {
$user = new User;
$user->setFirstName('root');
$user->setLastName('root');
$user->setUsername('root');
$user->setEmail('root@root.root');
$user->setPassword(password_hash('root', PASSWORD_ARGON2I));
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
}
$loginpage = $client->request('GET', '/en/login');
$form = $loginpage->selectButton('submit')->form();
$form['username'] = 'root';
$form['password'] = 'root';
$client->submit($form);
}
// We request the app_index controller.
$crawler = $client->request('GET', '/en/');
// We verify that we have a 200 status code.
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
Я действительно не понимаю, почему это не работает ...