我正在尝试为使用 Ruby 的 Curses 库的应用程序编写规范。诅咒显然垄断了终端屏幕,所以我尝试将 rspec 的输出重定向到文件。这在大多数情况下是有效的,但是我的一些失败的规范缺少信息,我认为 RSpec 正在将它的一些输出打印到 $stdout。
我尝试将 Curses 库配置为不打印到屏幕上,但无济于事。有什么方法可以禁用 Curses 输出,以便可以正常运行测试?
我有一个配置标志,指定是否执行 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
——基思
Try Curses.close_screen
, when you decide to resume output of Curses, call Curses.refresh