Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony测试与环境_Php_Symfony_Testing_Phpunit_Environment Variables - Fatal编程技术网

Php Symfony测试与环境

Php Symfony测试与环境,php,symfony,testing,phpunit,environment-variables,Php,Symfony,Testing,Phpunit,Environment Variables,我有以下问题: 我有一个仅为开发或测试目的而定义的路由,我通过在控制器中执行以下操作来“保护”该路由: public function testAction() { $env = $this->container->get('kernel')->getEnvironment(); if ($env !== 'test' || $env !== 'dev') { throw $this->createNotFoundExceptio

我有以下问题:

我有一个仅为开发或测试目的而定义的路由,我通过在控制器中执行以下操作来“保护”该路由:

public function testAction()
{
    $env = $this->container->get('kernel')->getEnvironment();

    if ($env !== 'test' || $env !== 'dev')
    {
        throw $this->createNotFoundException('Oops, page not available in production environment...');
    }

    ...
}
现在,这在生产中运行良好,但当我尝试运行测试时,它会不断触发404

当我在测试期间回显
$env
变量时,它会显示:
test

FTESTFEST。。。。。。。。。。(来自phpunit的输出)

我试过使用
=
但是运气不好

在测试中,我做了一些类似的事情:

$client = static::createClient();
$client->request('GET', '/basecontroller/test');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
当我注释掉$env时,检查所有测试是否通过。 这可能是什么原因

if ($env !== 'test' || $env !== 'dev')
应该是

if ($env !== 'test' && $env !== 'dev')
此外,您不需要标识匹配,只需要值匹配,因为在这里您可以确定您正在比较字符串


此外,您可以通过仅在
routing\u dev.yml
routing\u test.yml
(或您需要以某种方式“包括”的等效项)中定义此路由来绕过所有这些混乱情况您还可以匹配调试参数,以防止将您创建的每个新环境添加到比较中:

if (!$this->get('kernel')->isDebug()) {
    // ...
}

在走了5分钟后,我得出了同样的结论,我将把它放在routing_dev.yml中。感谢您的澄清