2012-02-25 9 views
1

私は、非同期readFile(パス、コールバック)関数を持っています。特別なテストケースのテスト可能なコードを書く方法

初めてファイルを読み込むと、ファイルシステムからファイルが読み込まれます。コンテンツをメモリに保存します。

その後、同じファイルが読み込まれると、ファイルシステムに再度アクセスするのではなく、メモリから内容が返されます。

私が抱えている問題は、メソッドがファイルシステムまたはメモリから返されたかどうかを知るためのメソッド呼び出しの方法がないため、このメカニズムをテストする方法です。

私はreadFile()を実装して、キャッシング機能をテストできるようにするにはどうすればよいですか?

答えて

0

なぜ私は以前これについて考えなかったのですか?私はコールバック(エラー、コンテンツ、fromMemory)にフラグを渡して、ファイルシステムかメモリかを示すことができます:)

+0

しかし、このテストを書く上での目的は、ルーチンによる正しい動作を確認することです。そして今、あなたはその検証をルーチン自体に委ねています! –

2

ネイティブファイルオープナーをモックアウトします。

+0

私は個人的な理由で外部サービスを嘲笑したくないとあなたに言ったはずです。しかし、ベストプラクティスを推薦するために+1してください。 – ajsie

+0

私はナイフを使って人を殺すことに反対している。しかし、私はそれらを野菜を切るために使用しています。 :p私が言っていることは、適切なツールを正しい仕事に使うことは間違いではないということです。これはモックを使用するのに最適なケースです。 – pkoch

+0

合意した、モックは、ほとんど常に問題に対する誤った答えですが、この場合、それらは絶対に正しいです。 –

1

あなたの呼び出しを使用してファイルを読んでから、ファイルを修正してからもう一度ファイルを読んでみてください。それが最初の行進と同じで、それがあなたの2番目と違うなら、それはうまくいくでしょう。あるいは、キャッシュする変数を公開して変更して確認することもできます。

+0

おそらくあなたは "...ファイル**の修正..."を意味していました。これは、何かを模倣することなくルーチンをテストするための素晴らしい方法です。 +1 –

+0

@RossPatterson correct、whoops! – balupton

0

コードレベルでは、コンテンツがキャッシュに存在するかどうかをチェックしておく必要があります。ファイルに移動せず、キャッシュから他のものを読み取る場合はチェックしてください。 このチェックは、あるケースでは真を返すように嘲笑され、別のケースでは偽であり、この周りにテストを書くことができます。 私はここで意味を作っていますように願っています。

関連する問題