使用参数测试CLI

时间:2018-01-23 12:11:42

标签: ruby testing minitest

我认为这是非常新手的东西,但我正在学习Ruby,我正在开发一个小型CLI工具,它接收一些参数以便正确地完成它的工作。这是我目前的工作流程:

enter image description here

我想测试(使用Minitest)所有可能的流程:

  • 退出0,如果ARGV.count!= 2
  • ,则会显示帮助信息
  • 如果第一个参数不正确,则退出1
  • 如果第二个参数不正确,则退出1
  • 如果两个参数都不正确则退出
  • 如果所有参数都正确,则退出0并执行操作

现在,如果我运行测试,我唯一看到的是帮助输出,因为没有传递参数。

所以,有几个问题:

  • 如何在测试中将参数传递给主程序?
  • 如何测试输出? (我正在使用puts

谢谢!

1 个答案:

答案 0 :(得分:1)

漂亮的图表!

你可以使用像aruba https://github.com/cucumber/aruba

这样的助手

或深入红宝石内部以便将其弯曲到您的意愿!

# test.rb
pseudoIO = StringIO.new
$stdout = pseudoIO

puts "hi #{ARGV.join(', ')}"

ARGV.replace ["file1"]

puts "now its #{ARGV.join(', ')}"

abort "captured: #{pseudoIO.string}"

输出应该是

ruby text.rb "whutup"
# => captured: hi whutup
# => now its file1