Codeception无法在Symfony 4中找到Kernel.php

时间:2018-03-01 08:57:19

标签: php symfony functional-testing codeception symfony4

我正在尝试使用Codeception使用Symfony 4对项目进行一些功能验收测试。项目环境是使用docker容器构建的(只是简单的pgsql容器和运行php bin/comnsole serve的php容器,并将8000暴露给不同的本地端口)。 我遇到了运行使用symfony扩展指定的测试导致错误的问题:

bin/codecept run -v
Codeception PHP Testing Framework v2.4.0
Powered by PHPUnit 7.0.2 by Sebastian Bergmann and contributors.

In Symfony.php line 300:

  [Codeception\Exception\ModuleRequireException]
  [Symfony] module requirements not met --

  Kernel class was not found in /srv/dsp-blacklister/src/Kernel.php. Specify directory where file with Kernel class for your application is located with `app_path` parameter.

但Kernel位于那里:

/srv/dsp-blacklister/src # ls -la
total 4
drwxr-xr-x    7 root     root           224 Feb 28 09:35 .
drwxr-xr-x   26 root     root           832 Feb 28 16:18 ..
drwxr-xr-x    3 root     root            96 Feb 28 08:16 Controller
drwxr-xr-x    5 root     root           160 Feb 28 10:39 Entity
-rw-r--r--    1 root     root          2010 Feb 28 09:35 Kernel.php
drwxr-xr-x    4 root     root           128 Feb 28 11:39 Migrations
drwxr-xr-x    3 root     root            96 Feb 28 09:09 Repository

2 个答案:

答案 0 :(得分:2)

您的内核位于不同的命名空间中。除了下面的临时黑客(添加到内核类的底部)之外,还没有解决此问题的方法

class_alias(Kernel::class, 'App\Kernel', true);

答案 1 :(得分:0)

现在,您可以使用kernel_class参数指定内核名称空间:

modules:
    enabled:
        - \Helper\Functional
        - Symfony:
            kernel_class: AppTest\Kernel