Zend_Test_PHPUnit_ControllerTestCase
を使用してファイルアップロードを受け取るコントローラアクションをテストするにはどうすればよいですか?Zend Frameworkを使用したファイルアップロードとユニットテスト
$this->getRequest()->setPost()
は、データ配列内のファイル名を取ることが理想的ですが、これはサポートされていないようです。
この段階では、アプリケーションをコマンドラインでブートストラップ/実行し、フロント・コントローラーに渡すリクエスト・オブジェクトを作成します。これはZend_Test_PHPUnit_ControllerTestCase
をバイパスしますが、その後、ファイルがControllerTestCaseの次の$this->dispatch('/some/url')
を介して正しくアップロードされたことを確認できます。しかし、このメソッドを使用してリクエストオブジェクトにファイルを取得する方法についても、私は困惑しています。
私が考えることができるのは、アプリケーション(APPLICATION_ENV='testing'
)を指すコマンドラインからHTTPサーバーを起動し、ZendのHttpクライアントまたはCURLなどを介してファイルをアップロードすることだけです。それは私を非常にエレガントなものにしません。
誰もがこの問題に対処しなければなりませんでしたか?
ありがとうございます!
ポインタありがとうございます! コントローラのアクションはフォームをインスタンス化し、リクエストがPOSTかどうかをチェックします。 通常、ControllerTestCaseはこの種のコントローラコードをテストするのに非常にうまく機能しますが、ファイルを処理するメカニズムはありません。この$ _FILESのアイデアを試してみます。 誰かが共有する例があれば、コントローラーコードのテスト状況の例を見てみたいです! – user131056
@ jason:これは古い投稿だとわかっていますが、本当に助けが必要です。私は同様の問題を抱えています:ファイルのアップロードをテストしようとしていますが、ファイルが受信された後、かなり複雑なロジックが発生しています。私はあなたが示唆したようにユニットテストを見てみましたが、それは私の理解を少し超えています。基本的には、フォームが検証され、ファイルがアップロードされ、適切な場所にソートされていることを確認する必要があります。 – blainarmstrong