1

我正在尝试为使用 Ruby 的 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

Try Curses.close_screen, when you decide to resume output of Curses, call Curses.refresh

于 2013-03-25T18:40:02.587 回答