在 Symfony 中访问测试目录中的资源文件
Accessing resource file in test directory in Symfony
目前我的目录结构如下:
src
-App
--MyBundle
---Service
----DefaultService
tests
-AppMyBundle
--files
---data.csv
--Service
---DefaultServiceTest
我正在为文件 reader 编写测试,我添加了 data.csv
文件作为测试演示文件。在我的测试中,我需要获取该 data.csv
文件的路径。但是我找不到任何方法来获得它。我尝试通过 file_locator
服务访问它,例如:
$locator = $this->container->get('file_locator');
$path = $locator->locate('@AppMyBundle/Tests/files/data.csv');
和
$locator = $this->container->get('file_locator');
$path = $locator->locate('@AppMyBundle/files/data.
运气不好。
如果需要,我的 DefaultService
的名称空间是 App\MyBundle\Service
,DefaultServiceTest 的名称空间是 App\MyBundle\Tests\Service
您不在 app/bundle 系统中,请尝试此代码:
$path = $this->get('kernel')->getRootDir() . '/../tests/AppMyBundle/files/data.csv';
我是这样使用$client->getContainer()->getParameter('kernel.root_dir')
的:
$client = static::createClient();
$schemaPath = sprintf(
'%s/../tests/MyBundle/Resources/rss2.xsd',
$this->_client->getContainer()->getParameter('kernel.root_dir')
);
我目前正在使用 Symfony 5、PHPUnit 7.5 编写单元测试(解析 Excel 文件)时这样做。我的方法要简单得多。我的测试结构如下:
tests
- Service
-- ManifestReaderTest.php
-- testdata
--- import_test_good.csv
然后在我的 ManifestReaderTest class 中,我有以下内容:
$this->assertFileExists(__DIR__ . "/testdata/import_test_good.csv" );
这样,我就不会依赖外部 classes 或服务。
目前我的目录结构如下:
src
-App
--MyBundle
---Service
----DefaultService
tests
-AppMyBundle
--files
---data.csv
--Service
---DefaultServiceTest
我正在为文件 reader 编写测试,我添加了 data.csv
文件作为测试演示文件。在我的测试中,我需要获取该 data.csv
文件的路径。但是我找不到任何方法来获得它。我尝试通过 file_locator
服务访问它,例如:
$locator = $this->container->get('file_locator');
$path = $locator->locate('@AppMyBundle/Tests/files/data.csv');
和
$locator = $this->container->get('file_locator');
$path = $locator->locate('@AppMyBundle/files/data.
运气不好。
如果需要,我的 DefaultService
的名称空间是 App\MyBundle\Service
,DefaultServiceTest 的名称空间是 App\MyBundle\Tests\Service
您不在 app/bundle 系统中,请尝试此代码:
$path = $this->get('kernel')->getRootDir() . '/../tests/AppMyBundle/files/data.csv';
我是这样使用$client->getContainer()->getParameter('kernel.root_dir')
的:
$client = static::createClient();
$schemaPath = sprintf(
'%s/../tests/MyBundle/Resources/rss2.xsd',
$this->_client->getContainer()->getParameter('kernel.root_dir')
);
我目前正在使用 Symfony 5、PHPUnit 7.5 编写单元测试(解析 Excel 文件)时这样做。我的方法要简单得多。我的测试结构如下:
tests
- Service
-- ManifestReaderTest.php
-- testdata
--- import_test_good.csv
然后在我的 ManifestReaderTest class 中,我有以下内容:
$this->assertFileExists(__DIR__ . "/testdata/import_test_good.csv" );
这样,我就不会依赖外部 classes 或服务。