2012-03-05 2 views
0

私はSymfony 2アプリケーションを持っています。これはRESTインターセースを使用しています。私は異なる環境で統合テストを実行したい。テストが実行されるべきである:異なる設定で複数のテスト環境を使用するにはどうすればよいですか?

  • いずれか(特定のホスト上で実行されている)実際のインターフェイス
  • または(ローカルホスト上で実行されている)モックアップインタフェースに対する反対。

実行するテスト環境はどのように指定できますか?現在、私はアプリケーションフォルダ内からの

phpunit -c app/ 

を使用してテストを開始します。しかし、私はアプリのフォルダを複製したくない。

アップデートは具体的に私はdoint REST呼び出しを担当してRESTサービスを、持っている、のはそれRestBaseを呼びましょう。ある時点で、$urlPrefix.$restPathのようなURLが作成されます。 $urlPrefixdev,stage,prod環境では異なります。現在、この設定はconfig_*.ymlで行われています。しかし、異なるurlPrefixに対してテストを実行したい。

urlPrefixurlPrefixごとに異なる設定で別の別の環境に対するhttp://localhost:8888

phpunit -c app/ **-env=test2** 

実行、ある

phpunit -c app/ **-env=test** 

:概念的には私のようなものを持っていると思います。

は、例えば、testよりも、別の環境でテストを実行する方法を質問

をまとめtest2(プログラムでこれを変更しないでください)?

答えて

1

したがって、phpunitを使用してREST APIをテストする機能があります。

Symfony2は、すでにhttpカーネルを呼び出すことによってフロントコントローラをバイパスする手段を提供しています。

あなたがしなければならないのは、(PHPUnitのTest_Caseから自分自身を継承)のWebTestCaseクラスを拡張することです:

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class MyControllerTest extends WebTestCase 
{ 
public function testGET() 
{ 
    // Create a new client to browse the application 
    $client = static::createClient(); 

    $crawler = $client->request('GET', '/api/v1/test'); 
    $this->assertTrue(200 === $client->getResponse()->getStatusCode()); 
} 
} 
+0

これは明らかです。テスト環境に基づいてURLプレフィックスを設定する方法は?例: '$ this-> container-> getParameter(" urlPrefix ")。"/api/va1/test "' – Chris

+0

一般的に 'urlPrefix'の値が違うことは私には明らかです。私の質問は、異なるテスト環境を使用する方法です。つまり、 'test'以外の環境でテストを実行する方法です。 'test2'です。 – Chris

+0

'$ client = static :: createClient(array( 'environment' => 'test2'));' – Florian

関連する問題