我正在尝试为使用Ruby的Curses库的应用编写规范。诅咒显然垄断终端屏幕,所以我尝试将rspec的输出重定向到文件。这在很大程度上是有效的,但是我的一些失败的规格缺少信息,我认为RSpec正在将其部分输出打印到$ stdout。
我已经尝试将Curses库配置为不打印到屏幕上,但无济于事。有没有办法禁用Curses输出,以便测试可以正常运行?
答案 0 :(得分:0)
尝试Curses.close_screen
,当您决定恢复诅咒的输出时,请致电Curses.refresh
答案 1 :(得分: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
- 基思