Symfony2+;Codeception给出了;您必须重写KernelTestCase::createKernel();

Symfony2+;Codeception给出了;您必须重写KernelTestCase::createKernel();,symfony,codeception,Symfony,Codeception,我创建了一个从WebTestCase继承的新测试。当我运行codeception测试时,出现以下错误: [RuntimeException] You must override the KernelTestCase::createKernel() method. 我不清楚我需要什么来覆盖它。我想要的是一个客户端,它可以调用某个URI来获取我的http响应 这就是测试: public function testSearchAction() { $searchUri

我创建了一个从WebTestCase继承的新测试。当我运行codeception测试时,出现以下错误:

 [RuntimeException] You must override the KernelTestCase::createKernel() method.
我不清楚我需要什么来覆盖它。我想要的是一个客户端,它可以调用某个URI来获取我的http响应

这就是测试:

  public function testSearchAction()
    {
        $searchUri = '/search';
        $client = static::createClient();
        $client->request('GET', $searchUri);
        $response = $client->getResponse();
        $this->assertSame(Response::HTTP_BAD_REQUEST, $response->getStatusCode());
    }
这是我的unit.suite.yml文件

类别名称:UnitTester

modules:
    enabled:
        - Symfony2:
            app_path: '../../app'
            var_path: '../../app'
        - Doctrine2:
            depends: Symfony2
        - AppBundle\Helper\Unit
您必须重写KernelTestCase::createKernel()方法的异常可以通过在文件app/phpunit.xml.dist中设置KERNEL_DIR参数来解决。 默认情况下,将对该文件中有关内核目录的部分进行注释

内核的完整路径可能如下所示:

<php>
    <server name="KERNEL_DIR" value="C:/symfonyProjects/project1/app" />
</php>

异常您必须重写KernelTestCase::createKernel()方法,可以通过在文件app/phpunit.xml.dist中设置KERNEL_DIR参数来解决。 默认情况下,将对该文件中有关内核目录的部分进行注释

内核的完整路径可能如下所示:

<php>
    <server name="KERNEL_DIR" value="C:/symfonyProjects/project1/app" />
</php>

在尝试将WebTestCase扩展的现有测试集成到Codeception时,我遇到了相同的问题。在
tests/functional/\u bootstrap.php中设置
KERNEL\u DIR
为我解决了这个问题:

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';

我在尝试将WebTestCase扩展的现有测试集成到Codeception时遇到了相同的问题。在
tests/functional/\u bootstrap.php中设置
KERNEL\u DIR
为我解决了这个问题:

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';

可以运行基本的WebTestCase(或简单的PHPUnit\Framework\TestCase)。
在unit.suite.ym文件中,添加boostrap设置:

# tests/unit.suite.ym
modules:
    enabled:
        - Symfony2:
            app_path: '../../app'
            var_path: '../../app'
        - Doctrine2:
            depends: Symfony2
        - AppBundle\Helper\Unit
bootstrap: _bootstrap.php
创建tests/unit/_bootstrap.php文件

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';

可以运行基本的WebTestCase(或简单的PHPUnit\Framework\TestCase)。
在unit.suite.ym文件中,添加boostrap设置:

# tests/unit.suite.ym
modules:
    enabled:
        - Symfony2:
            app_path: '../../app'
            var_path: '../../app'
        - Doctrine2:
            depends: Symfony2
        - AppBundle\Helper\Unit
bootstrap: _bootstrap.php
创建tests/unit/_bootstrap.php文件

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';

如果Symfony 4遇到此错误,则解决方案已更改

在Symfony 2和3中,您可以在tests/functional/_bootstrap.php中设置内核目录:

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';
<?php
$_SERVER['KERNEL_CLASS'] = App\Kernel::class;

如果Symfony 4遇到此错误,则解决方案已更改

在Symfony 2和3中,您可以在tests/functional/_bootstrap.php中设置内核目录:

<?php
$_SERVER['KERNEL_DIR'] = __DIR__ . '/../../app/';
<?php
$_SERVER['KERNEL_CLASS'] = App\Kernel::class;

为什么要尝试使用Codeception运行WebTestCase测试?使用Codeception的Symfony2模块或使用phpunit运行WebTestCase测试。好的,我扩展了Codeception测试用例,
class SearchControllerTest Extendes\Codeception\TestCase\test
那么我如何获得客户端?我扩展了WebTestCase,因为它有Symfony客户端,我可以使用它通过请求和响应进行调用。与测试相比,ead-Cept格式更适合于此类测试。为什么要尝试使用Codeception运行WebTestCase测试?使用Codeception的Symfony2模块或使用phpunit运行WebTestCase测试。好的,我扩展了Codeception测试用例,
class SearchControllerTest extends\Codeception\TestCase\Test
如何获取客户端?我扩展了WebTestCase,因为它有一个Symfony客户端,我可以使用它通过请求和响应进行调用。ead-Cept格式比Test更适合这种测试。