1

Symfony\Bundle\FrameworkBundle\Test\WebTestCase を使用すると、コンテナー、エンティティ マネージャーなどに簡単にアクセスできます。自動手動 HTTP リクエストによる機能テストに使用できます。

コンテナーとすべてのサービスに簡単にアクセスできるように、Symfony2 コンソール コマンドのテストにも使用できますか?

多くのサービスを使用するコスト Symfony2 コンソール コマンドをテストし、次に教義エンティティ マネージャーを使用してデータにアクセスしたいと考えています。

PHPunit のドキュメントでは、テスト クラスをPHPUnit_Extensions_Database_TestCase, で拡張することを提案しています。

WebTestCaseコンソールコマンドをテストするために、テストの代わりに拡張できますか?

私はすでに参照しました

4

1 に答える 1

4

WebTestCaseWeb アプリケーションの機能テストを目的としています。コマンドをテストするためにそれを使用することを妨げるものは何もありませんが、それは正しくないと感じます (したがって、あなたの質問)。

コマンドのテスト

コマンド テスト (およびコントローラー テスト) は複雑であってはならないことを覚えておいてください。これは、そこに入れるコードも複雑であってはならないのと同じです。

コマンドをコントローラーとして扱い、コマンドをスリムにして、ビジネス ロジックをモデルに配置します。

コンテナへのアクセス

そうは言っても、独自のKernelAwareTestCase (またはContainerAwareTestCase ) を自分で実装できます。以下は、私が時々使用している基本クラスです: jakzal / KernelAwareTest.php Gist

また、隣には Symfony カーネルで実際に動作する があることにSymfony\Component\Console\Application注意してください。Symfony\Bundle\FrameworkBundle\Console\Application

最後の注意事項

最も広範なテストは、ユニット レベルで行う必要があることに注意してください。

于 2013-08-10T13:02:50.837 に答える