2017-02-25 5 views
2

のテストディレクトリ内のリソースファイルへのアクセス現在、私は次のようにディレクトリ構造を持っている: `symfonyの

src 
-App 
--MyBundle 
---Service 
----DefaultService 
tests 
-AppMyBundle 
--files 
---data.csv 
--Service 
---DefaultServiceTest 

I'm writting test for a file reader and I added data.csv file for demo file for a test. In my test I need to get a path of that data.csv file. But I couldn't find any way of getting it. I have tried accessing it via file_locator service like:

$locator = $this->container->get('file_locator'); 
$path = $locator->locate('@AppMyBundle/Tests/files/data.csv'); 

and

$locator = $this->container->get('file_locator'); 
$path = $locator->locate('@AppMyBundle/files/data. 
あなたはアプリ/バンドルシステムから外部にある

With no luck. namespaces if necessary of my DefaultService isのApp \ MyBundle \サービスand for DefaultServiceTest isのApp \ MyBundle \は\ Service`

答えて

0

をテストしますので、このコードをしてくださいしてみてください。

$path = $this->get('kernel')->getRootDir() . '/../tests/AppMyBundle/files/data.csv'; 
+0

悲しいことに、これはうまくいきません。 InvalidArgumentException:ファイル "@ AppMyBundle/Tests/files/data.csv"を見つけることができませんエラー – Einius

+0

更新@Einius –

+0

私はこのオプションについて考えましたが、私はもう少し独立したパスを得ることができると思っていたが、私はこれを推測する私が行く必要がある方法になります – Einius

0

私はこのような$client->getContainer()->getParameter('kernel.root_dir')を使用:

$client = static::createClient(); 

$schemaPath = sprintf(
    '%s/../tests/MyBundle/Resources/rss2.xsd', 
    $this->_client->getContainer()->getParameter('kernel.root_dir') 
);