Symfony 4.1:在单元测试中无法自动加载任何App类

时间:2018-12-11 13:34:58

标签: php unit-testing symfony symfony4

问题描述

我有一个symfony应用。我创建了一些可以在Controller中成功使用的自定义类,即在控制器中使用时可以成功自动加载的那些类。但是,当我尝试测试它们时,它们只是无法自动加载。

我检查过的内容

  • 三次检查路径和名称空间是否相互对应
  • 检查了我的命名空间中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

有什么想法吗?

0 个答案:

没有答案