0

コマンドラインコマンドを書いていますが、TDDしたいです。私はファイルを作成および削除しますが、サンドボックス テストの宝石などがあるかどうか疑問に思っていました。ルビーとrspecを使用しています。

4

3 に答える 3

2

何をしようとしているかにもよりますが、ファイルシステムとSTDIN / STDOUTをモックアウトして、ほとんどのコマンドラインRubyをテストします。依存性注入を使用すると、次のような結果になることがよくあります。

describe Add do
  it 'writes the result to standard out' do
    console = mock('STDOUT')
    console.should_receive(:puts).with('5')

    Add.new(console).execute(3,2)
  end
end

class Add
  def initialize(out = STDOUT)
    @out = out
  end

  def execute(command_line_args)
    @out.puts(command_line_args.inject(:+))
  end
end

Add.new.execute(ARGS)

デフォルト値を使用することで、テストに挿入できますが、本番コードからは除外します。

お役に立てば幸いです。

ブランドン

于 2012-06-04T00:06:05.420 に答える
0

ジェネレーターによって生成されたテンプレートはnewgem install_cucumber、私がかなり気に入っているパターンを使用しています。それが作成する support/env.rb と support/common.rb ファイルを見てください:

テストでの使用は次のようになります。

in_tmp_folder do
  # The current directory is now a generated tmp folder.
  # If you stick to relative paths, everything you do in here should be safe
end

上記にリンクされているファイルは、キュウリのテストでこれを使用するためのものですが、使用しているフレームワークに簡単に適応できます。上記の env.rb は、各テストが開始される前に tmp フォルダーを削除します。

于 2012-06-16T21:46:26.533 に答える
0

sandboxまた、宝石を見たいと思うかもしれません。

gem install sandbox

使用例はこちら: https://github.com/bdimcheff/sandbox

于 2012-06-16T21:47:35.393 に答える