2017-11-12 5 views
0

は、私は私のDefaultControllerTestphpunit symfonyでdatafixtures hautelook aliceをロードするには?

$load = new Loader(); 
$load->load('src/AppBundle/DataFixtures/ORM/product.yml'); 

にこのコードを追加しようと、私はPHPUnitのを実行する場合は、ここで私のコントローラ

<?php 

namespace Tests\AppBundle\Controller; 

use Nelmio\Alice\Fixtures\Loader; 
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class DefaultControllerTest extends WebTestCase 
{ 
    public function testIndex() 
    { 
     $load = new Loader(); 
     $load->load('src/AppBundle/DataFixtures/ORM/product.yml'); 
     $client = static::createClient(); 

     $crawler = $client->request('GET', '/'); 

     $this->assertEquals(200, $client->getResponse()->getStatusCode()); 
     $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text()); 
    } 
} 

の完全なコードです。それは動作し、エラーは見つかりませんでした。これは正常にテストされましたが、問題はここのproduct.ymlはデータベースにデータを挿入しません。しかし、私がこのコマンドを実行した場合bin/console hautelook_alice:doctrine:fixtures:load --append。これは動作します。データを挿入します。コントローラをテストする前に、datafixtureをロードするにはどうすればいいですか?私はそれについてもっと研究しようとしています。私は今それを追加する方法の手がかりがありません。

答えて

1

単純にbashスクリプトを使用できます。

#!/bin/bash 
echo "# Refresh data model and load fixtures" 
php bin/console doctrine:database:create --if-not-exists --env=dev 
php bin/console doctrine:schema:drop --force --env=dev 
php bin/console doctrine:schema:create --env=dev 
php bin/console doctrine:schema:validate --env=dev 
php bin/console hautelook_alice:doctrine:fixtures:load --append --env=dev 
echo -e " --> DONE\n" 

次に、この新しいデータベースを使用するphpunitを起動することができます。または、このスクリプトでphpunit呼び出しを追加するだけでもかまいません。

./bin/simple-phpunit --debug --verbose 
+0

ありがとうございます。 Webtestcaseにロードする別の方法はありますか? – user3818576

+0

--env = devとは何ですか? – user3818576

+1

"env"は現在の作業環境ですので、開発する際には一般的に "dev"を使用します。実稼働サーバーサーバーにデプロイするときは、env = prodを使用してコマンドを起動します。 (prodは、env最適化され、デバッグ情報なしのプロダクションを表します) –

関連する問題