如果“framework.test”配置未设置为 true,则无法创建用于功能测试的客户端

Posted

技术标签:

【中文标题】如果“framework.test”配置未设置为 true,则无法创建用于功能测试的客户端【英文标题】:You cannot create the client used in functional tests if the "framework.test" config is not set to true 【发布时间】:2021-07-05 04:15:08 【问题描述】:

我正在尝试使用 WebTestCase 应用功能测试。

class CalculatorControllerTest extends WebTestCase

    public function testSumPost()
    
        $client = static::createClient();

        $client->request('GET', '/calculator/sum');

        $this->assertEquals(200, $client->getResponse()->getStatusCode());
    

我在运行测试时收到以下错误消息:

 You cannot create the client used in functional tests if the "framework.test" config is not set to true

我的测试框架:

framework:
 test: ~
 session:
   storage_id: session.storage.mock_file
 router:
   resource: "%kernel.root_dir%/config/routing_test.yml"
  profiler:
   collect: false

我的 phpunit.xml:(我也尝试在 APP_ENV 中使用 test 而不是 dev & Debug 1 而不是 0)

<?xml version="1.0" encoding="UTF-8"?>

<phpunit
    backupGlobals               = "false"
    backupStaticAttributes      = "false"
    colors                      = "true"
    convertErrorsToExceptions   = "true"
    convertNoticesToExceptions  = "true"
    convertWarningsToExceptions = "true"
    processIsolation            = "false"
    stopOnFailure               = "false"
    bootstrap                   = "config/bootstrap.php" >

<php>
    <ini name="error_reporting" value="-1" />
    <server name="KERNEL_CLASS" value="AppKernel" />
    <env name="APP_ENV" value="dev" />
    <env name="APP_DEBUG" value="0" />
    <env name="SHELL_VERBOSITY" value="-1" />
    <!-- define your env variables for the test env here -->
</php>

<testsuites>
    <testsuite name="Plein Test Suite">
        <directory>tests/unit</directory>
    </testsuite>
</testsuites>

我查看了所有相关问题,但找不到好的答案,请问有什么想法吗?

【问题讨论】:

在您的config/packages/test/framework.yaml 中有test: ~,但我想应该是test: true。见:github.com/symfony/recipes/blob/master/symfony/framework-bundle/… 谢谢,但当我将 hem 设置为 true 并重新启动 docker 容器不工作时 您可能需要重建缓存。你试过php bin/console cache:clear --env=test或者rm -rf var/cache/test* 假设您使用的是相对标准的 Symfony 安装,请将您的 phpunit.xml 文件中的 &lt;env name="APP_ENV" value="dev" /&gt; 替换为 &lt;env name="APP_ENV" value="test" /&gt; 【参考方案1】:

我通过将以下内容添加到我的 phpunit.xml.dist / phpunit.xml 文件(在 phpunit 标记内)解决了这个问题:

<php>
    <env name="APP_ENV" value="test" force="true"/>
</php>

【讨论】:

以上是关于如果“framework.test”配置未设置为 true,则无法创建用于功能测试的客户端的主要内容,如果未能解决你的问题,请参考以下文章

Redis 未授权访问漏洞

使用 Robot Framework Test 在浏览器中上传文件

Framework7--Test

如何在`django rest_framework test`的`APIClient`的标头中添加身份验证令牌

交换机的基本配置

我收到警告“未设置容器内存限制。为 1G 容器配置 JVM。”无论 RAM 大小或 docker 配置