如何在Symfony中扩展WebTestCase

时间:2018-08-27 10:00:35

标签: php symfony

我想用symfony编写功能测试,但无法覆盖WebTestCase的createKernel方法。我们的应用程序使用这样的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创建自己的内核?

1 个答案:

答案 0 :(得分:1)

请参阅文档testing (symfony docs)

  

要运行功能测试,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 runnable,而在应用目录中具有phpunit.xml.dist文件。通常您可以通过bin/phpunit -c app path_to_the_tests

运行测试