2011-08-06 13 views
3

私はRubyでコマンドラインアプリケーションを作成しています。私はRspec 2に精通しています。これは、私が取り組んでいるいくつかのRailsアプリケーションで使用されています。私はコマンドラインアプリケーションを書いています。私はBDDのためにRspec 2を使用しようとしています。Rspec 2を使ってコマンドラインアプリケーションのUIレイヤーをテストする

アプリケーションのユーザーインターフェイスレイヤをテストするにはどうすればよいですか?私は、アプリケーションに対話型の入力を与えるか、putsを使って出力された特定の出力を確認する必要があります。また、STDOUT出力を抑制する方法はありますか?自動テストを実行すると、アプリケーションの出力がrspecのステータス出力の間に出力され、読みにくくなります。

答えて

9

ここでは、役立つ例を示します。私はMinitestでテストしている自分のアプリケーションの1つで使っていますが、Rspecに変換するのは簡単です。

def setup 
    $stdout = StringIO.new 
    ... 
end 

stdoutがStringIOオブジェクトに書き込まれますので、これは、テスト結果の間には、アプリの出力を取り除きます。 StringIOオブジェクトを正規表現と照合することができるので、特定のものが出力されたかどうかをテストするのと同じ方法でテストすることもできます。

+0

これはまさに私が必要としていたものです!ありがとう。 – sensae

関連する問題