コマンドラインコマンドを書いていますが、TDDしたいです。私はファイルを作成および削除しますが、サンドボックス テストの宝石などがあるかどうか疑問に思っていました。ルビーとrspecを使用しています。
質問する
333 次
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 ファイルを見てください:
- https://github.com/drnic/newgem/blob/master/rubygems_generators/install_cucumber/templates/features/support/env.rb.erb
- https://github.com/drnic/newgem/blob/master/rubygems_generators/install_cucumber/templates/features/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
于 2012-06-16T21:47:35.393 に答える