1

Ruby の Curses ライブラリを使用するアプリの仕様を書こうとしています。Curses は明らかに端末画面を独占しているので、rspec の出力をファイルにリダイレクトしてみました。これはほとんどの場合機能しますが、失敗した仕様の一部には情報が欠落しており、RSpec はその出力の一部を $stdout に出力していると思います。

画面に出力しないように Curses ライブラリを設定しようとしましたが、役に立ちませんでした。テストを正常に実行できるように、Curses の出力を無効にする方法はありますか?

4

2 に答える 2

0

curses 出力を行うかどうかを指定する構成フラグがあります。単体テストでは、curses の出力を無効にします。

さらに、実行時に stdout と stderr が tty のものかどうかをテストします。そうでない場合、それらはファイルにリダイレクトされ、curses の出力は必要ありません。次のようになります。

  def do_curses_output?
    $stdin.isatty && $stdout.isatty && want_curses_output
  end

  def foo
    if do_curses_output?
      # ... do the curses stuff
    end
  end

-- キース

于 2013-07-23T15:14:06.163 に答える
0

Curses.close_screenCurses の出力を再開する場合は、 を試してください。Curses.refresh

于 2013-03-25T18:40:02.587 に答える