Symfony 4.1: ни один из классов App не может быть автоматически загружен в модульных тестах - PullRequest
0 голосов
/ 11 декабря 2018

Описание проблемы

У меня есть приложение Symfony.Я создал несколько пользовательских классов, которые я успешно использую в контроллере, то есть эти классы автоматически загружаются при использовании в контроллере .Тем не менее, когда я пытаюсь проверить их, они просто не могут быть автоматически загружены.

То, что я проверил

  • Тройная проверка, что путь и пространство имен соответствуютдруг друга
  • Проверено мое пространство имен для тестов, определенных в composer.json
  • Включено ./vendor/autoload.php в самом тесте - все еще не повезло.Включил вручную с require_once - все заработало.Так как автозагрузка работает нормально в режиме «разработки», то есть когда она запускается не в модульных тестах, я думаю, проблема в настройках теста: что автозагрузка и как.

Моя среда

Вот мои autoload разделы в composer.json:

"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
},

"autoload-dev": {
    "psr-4": {
        "App\\Tests\\": "tests/"
    }
},

Вот моя структура проекта:

My project structure

Вот 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

Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...