首页 > 解决方案 > 如何在 Symfony 中扩展 WebTestCase

问题描述

我想在 symfony 中编写功能测试,但我无法覆盖createKernelWebTestCase 的方法。我们的应用程序通过使用这样的 HttpKernel 集成了 symfony:

$kernel = new HttpKernel($dispatcher, $controllerResolver, new 
RequestStack(), $argumentResolver);

$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();

$kernel->terminate($request, $response);

我尝试从被覆盖的createKernel方法中返回这个内核,但它没有一些getContainer()稍后会出错的方法(如 )。如何为 WebTestCase 创建自己的内核?

标签: phpsymfony

解决方案


请参阅文档测试(symfony 文档)

要运行您的功能测试,WebTestCase 类需要知道哪个是应用程序内核来引导它。内核类通常定义在 KERNEL_CLASS 环境变量中(包含在 Symfony 提供的默认 phpunit.xml.dist 文件中):

<?xml version="1.0" charset="utf-8" ?>
<phpunit>
    <php>
        <!-- the value is the FQCN of the application kernel -->
        <env name="KERNEL_CLASS" value="App\Kernel" />
    </php>
    <!-- ... -->
</phpunit>

此外,您的 bin 目录中有 phpunit 可运行,而 app 目录中有 phpunit.xml.dist 文件。通常您可以通过以下方式运行测试bin/phpunit -c app path_to_the_tests


推荐阅读