Symfony 测试和环境
Symfony Tests and environment
我有以下问题:
我定义了一个仅用于开发或测试目的的路由,我 'protect' 通过在我的控制器中执行以下操作:
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
FtestFtestFtest........(来自 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_dev.yml
和 routing_test.yml
中定义此路由(或您需要 "include" 的等效项)
来绕过所有这些混乱
您还可以匹配调试参数,以防止您创建的每个新环境都应添加到比较中:
if (!$this->get('kernel')->isDebug()) {
// ...
}
我有以下问题:
我定义了一个仅用于开发或测试目的的路由,我 'protect' 通过在我的控制器中执行以下操作:
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
FtestFtestFtest........(来自 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_dev.yml
和 routing_test.yml
中定义此路由(或您需要 "include" 的等效项)
您还可以匹配调试参数,以防止您创建的每个新环境都应添加到比较中:
if (!$this->get('kernel')->isDebug()) {
// ...
}