1

コマンドラインからgemfileに依存関係を追加するgemを書いています。gem 名を指定すると、rubygems から最新バージョンを取得し、それをユーザーの gemfile に追加します。

を使ってテスト駆動開発を実践していrspecます。ファイルの存在をモックしてその内容を確認するにはどうすればよいですか?

この種のことを行うためのパターンはありますか?ヒント、リンク、または例が役立ちます。私はこれをテストする特定の方法に設定していません。嘲笑がうまくいかない場合は、私に知らせてください。ありがとう!

4

2 に答える 2

1

書き込みと読み取りのみが必要な (ファイルシステム操作は必要ない) ファイル オブジェクトをモックしたい場合は、Ruby の組み込みの を試してくださいStringIOrequire 'stringio'を使用して任意の内容の「ファイル」を作成し、StringIO オブジェクトStringIO.new("Some contents")のメソッドを使用してその内容を確認するだけです。string

于 2013-06-09T13:35:29.353 に答える
0

単体テストと統合テスト

コードを投稿していないので、いくつかの仮定を立てる必要があります。一般に、Ruby のコア ライブラリまたは標準ライブラリから動作を実行するのは時間の無駄です。さらに、テストでは、必ずしもクラス内のすべてのメソッドではなく、クラスの動作を定義するメソッドを実行する必要があります。

境界を越えて I/O をテストするときは、多くの場合、統合テストを行っています。統合テストが必要な場合もありますが、単体テストと比較すると非常に小さなサブセットを作成する必要があります。

とはいえ、ファイルシステム、データベース、またはネットワーク I/O を含む統合テストは単体テストよりも遅いことがよくありますが、スタブ、モック、またはテスト固有の回避策を保証するのに十分遅いかどうかは、あなたのコードベース。

テストのオプション

本当にこれを行う必要がある場合は、多くのオプションがあります。これらのオプションには次のものがあります。

  1. ファイルシステム I/O に RAM ディスクを使用する。
  2. IO、File、または FileUtils へのスタブ呼び出し。
  3. ファイルフィクスチャを使用して問題を回避します。
  4. StringIO フィクスチャを使用して問題を回避します。
  5. File オブジェクトに加えて String や StringIO を受け入れるように、テスト対象のクラスを書き直します。
  6. FakeFSのような宝石を使用して、スタブ/モックを処理します。

これは、標準的に網羅的なリストを意図したものではありません。他にもオプションがあることは間違いありませんが、上記の 1 つ以上で一般的なユース ケースを処理する必要があります。

于 2013-06-09T14:35:39.410 に答える