14

symfony2 コントローラーで、オブジェクトを返すコントローラーをテストしたいと思いResponseます。私のテストクラスはWebTestCase. を使用しstatic::createClient()て、運用クライアントを取得します。

私の問題は、現在のインストールで仮想ホストを使用して適切なルートを呼び出すことです。

$client->getContainer()->get('router')->generate('my_route', array(), true)localhost をホストとしてルートを生成します。しかし、ホストとして myproject.local があるため、それは機能しません。

$client->getContainer()->get('kernel')->getRootDir()およびその他の dir メソッドは、Web パスではなく、Linux ファイル パスを提供します。

プロジェクトに参加しているのは私だけではないので、ハードコーディングすることはできません。では、正しいルートを取得する方法は何ですか、またはコントローラーをテストする別の方法はありますか?

4

2 に答える 2

14

Symfony2 の組み込みテスト フレームワーク (WebTestCase) は、異なる環境でアプリケーションをテストできるようにするために相対パスのみを必要とします。

$client->getContainer()->get('router')->generate('my_route', array(), false);

Symfony は http クライアントをシミュレートし、そのテスト用に作成されたカーネルのインスタンスに対してテストします。関連する Web サーバーはありません。

クライアント シミュレーションがどのように機能するかについては、こちらで詳しく読むことができます: http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

于 2013-03-19T21:24:19.767 に答える