在Symfony框架中,parameters.yml
和 config_test.yml
文件通常用于存储应用程序的配置参数。在Symfony 3.4中,你可以使用这些参数来配置你的应用程序,并且可以在测试用例中注入这些参数。
parameters.yml: 这个文件用于存储应用程序的全局参数,如数据库连接信息、API密钥等。
config_test.yml: 这个文件用于存储测试环境的特定配置,它通常会覆盖 parameters.yml
中的一些设置,以便为测试环境提供适当的配置。
在Symfony中,你可以使用依赖注入来将参数注入到测试用例中。以下是如何在Symfony 3.4中将 parameters.yml
或 config_test.yml
中的变量注入到测试用例的步骤:
首先,在 parameters.yml
或 config_test.yml
中定义你的参数:
# app/config/parameters.yml
parameters:
my_parameter: 'value_for_dev'
# app/config/config_test.yml
imports:
- { resource: parameters.yml }
parameters:
my_parameter: 'value_for_test'
创建一个服务,该服务将使用这些参数:
// src/AppBundle/Service/MyService.php
namespace AppBundle\Service;
class MyService
{
private $myParameter;
public function __construct($myParameter)
{
$this->myParameter = $myParameter;
}
public function getMyParameter()
{
return $this->myParameter;
}
}
在 services.yml
中配置你的服务,以便Symfony知道如何创建它:
# app/config/services.yml
services:
app.my_service:
class: AppBundle\Service\MyService
arguments: ['@=service("AppBundle\\Service\\MyService").getMyParameter()']
在你的测试用例中,你可以注入这个服务并使用它的方法:
// tests/AppBundle/Service/MyServiceTest.php
namespace AppBundle\Tests\Service;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use AppBundle\Service\MyService;
class MyServiceTest extends KernelTestCase
{
public function testMyParameter()
{
self::bootKernel();
$myService = static::$kernel->getContainer()->get('app.my_service');
$this->assertEquals('value_for_test', $myService->getMyParameter());
}
}
问题: 参数没有正确注入到测试用例中。
原因: 可能是由于服务容器没有正确加载配置文件,或者参数名称拼写错误。
解决方法:
config_test.yml
文件被正确加载。parameters.yml
和 config_test.yml
中一致。php bin/console cache:clear --env=test
通过以上步骤,你应该能够在Symfony 3.4中将 parameters.yml
或 config_test.yml
中的变量成功注入到测试用例中。
领取专属 10元无门槛券
手把手带您无忧上云