Описание проблемы
У меня есть приложение Symfony.Я создал несколько пользовательских классов, которые я успешно использую в контроллере, то есть эти классы автоматически загружаются при использовании в контроллере .Тем не менее, когда я пытаюсь проверить их, они просто не могут быть автоматически загружены.
То, что я проверил
- Тройная проверка, что путь и пространство имен соответствуютдруг друга
- Проверено мое пространство имен для тестов, определенных в
composer.json
- Включено
./vendor/autoload.php
в самом тесте - все еще не повезло.Включил вручную с require_once
- все заработало.Так как автозагрузка работает нормально в режиме «разработки», то есть когда она запускается не в модульных тестах, я думаю, проблема в настройках теста: что автозагрузка и как.
Моя среда
Вот мои autoload
разделы в composer.json
:
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
Вот моя структура проекта:
Вот OrdersTest.php
:
<?php
declare(strict_types=1);
namespace App\Tests\Controller\ViewOrders;
use App\Controller\ViewOrders\Orders;
use PHPUnit\Framework\TestCase;
class OrdersTest extends TestCase
{
public function testNoneOfTheOrdersCanBeAccepted()
{
new Orders();
}
}
Вот пространство имен Order
:
namespace App\Controller\ViewOrders;
Вотмой 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.5/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
>
<php>
<ini name="error_reporting" value="-1" />
</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>
Как воспроизвести
$ ./bin/phpunit // in project root
Вот вывод:
#!/usr/bin/env php
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.
Testing Project Test Suite
E 1 / 1 (100%)
Time: 35 ms, Memory: 6.00MB
There was 1 error:
1) App\Tests\Controller\ViewOrders\OrdersTest::testNoneOfTheOrdersCanBeAccepted
Error: Class 'App\Controller\ViewOrders\Orders' not found
/home/vadim/projects/webApp/tests/Controller/ViewOrders/OrdersTest.php:14
Есть мысли?