2017-11-07 10 views
0

私は、仕事をしてデータをファイルにパックし、そのファイル(Content-Type: application/force-download)を戻すWebアプリケーションを開発しています。今私はいくつかの統合テストを実装しています。私はデータを要求し、Webアプリケーションは私にファイルを返します。テストで期待されるデータがダウンロードされると、Webアプリケーションは正しく動作します。私はthisを読んで、とてもインスピレーションを感じましたが、あなたがダウンロードしたいファイルをビルドするときにその応答は有効ですか?ファイルをダウンロードする統合テスト

答えて

1

いくつかの方法があります。最良から悪い順(YMMV):

出力を意味的にチェックします。たとえば、JSONの場合、解析が可能であり、期待されるキーと値が存在することを確認します。イメージの場合は、それが解析され、正しいフォーマットを持つことを確認します。

プロ:実際に気にしていることをテストしているだけです。テストの失敗は、特定の問題を指摘することができます。

Con:より多くの作業が必要です。

ファイルをバイト単位で直接比較します。 "ゴールデンマスター"アプローチ。ファイルが数行より大きい場合、またはバイナリファイルの場合は、ディスクに配置し、統合テストを実行します。これにより、外部プログラムで簡単に表示/編集できるようになります。

Pro:予想されるファイルがどのように見えるかは簡単です。

Con:不適切な変更があった場合に脆くなることがあります。たとえば、JSONオブジェクトのキーの順序は重要ではありません。さらに悪いことに、PNGイメージを生成している場合、作成時間がファイルに埋め込まれ、毎回テストが失敗する可能性があります。

ファイルハッシュを比較してください。私はこれを最後の手段と考えています。

プロ:ファイル全体を統合テストに保存する必要はありません。本当に大きい場合は、いいです。

Con:テストの失敗は何も意味しません。あなたの統合テストに埋め込まれたハッシュでさえあなたには何も言われません。これはちょうど "変化検出器"テストです。

+0

こんにちはトーマス。プラットフォームのcharsetエンコーディングが変更されたときに、ファイルをバイトごとに比較することについてお勧めしますか?テストはLinux上ではできますが、Windows上では動作しません。期待した結果がLinuxマシンで得られたからです。 – Francesco

+0

プラットフォームに関係なく、すべての場合にUTF-8を使用します。あなたの2つのプラットフォームのどちらが間違っているかは、あなた自身で理解する必要があります... – Thomas