使用参数测试 CLI

Test CLI with parameters

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

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

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

所以,有几个问题:

谢谢!

图表不错!

您可以使用像 aruba 这样的助手 https://github.com/cucumber/aruba

或深入研究 ruby 内部结构,使其随心所欲!

# 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