如何使用Rspec捕获中止或退出的值

时间:2015-12-29 18:45:53

标签: ruby shell rspec

我正在尝试为我的脚本编写一个Rspec测试,如果我的脚本正常失败将会通过该测试。

if options[:file] == false
  abort 'Missing an argument'
end

Rspec的:

it 'if the file argument is not given, it provides a helpful message' do
  expect(`ruby example_file.rb`).to eq('Missing an argument')
end

我的测试仍然失败并说

expected: 'Missing an argument'
got: ''

我不确定为什么它会返回一个空字符串。我没有运气看过这些帖子:

如果您需要有关我的脚本的更多信息,请通知我。谢谢。

1 个答案:

答案 0 :(得分:1)

abort / exit将打印到stderr,而您的rspec正在stdout频道上收听。请尝试以下方法:

expect(`ruby example_file.rb`).to output('Missing an argument').to_stderr