我有以下命令:
require 'highline'
class Import < Thor
desc "files", "Import files into the database"
method_option "path", :required => true, :desc => "Path to folder containing new files", :aliases => "-p", :type => :string
def files
require './config/environment'
line = HighLine.new
line.say(line.color("Identified files as Version 15 (English)", :green))
if line.agree(line.color("Are you sure you want to import?", :yellow))
line.say(line.color("Finished. Imported 70,114 items", :green))
else
line.say(line.color("Aborting...", :red))
end
end
end
现在,显然,目前这只是向屏幕输出一些语言。但是,我需要做的是为测试输出的命令编写一个测试,就像我期望的那样,当我开始在繁重的工作中挂钩时,我可以将这些东西存在。
我看过Aruba,但由于某种原因,这似乎不像是互动,而且不清楚原因。
因此,有没有人对如何测试它(使用RSpec)有任何想法?
答案 0 :(得分:3)
Aruba是一套完整的测试命令行应用程序的步骤。如果它不适合您,可能是因为aruba将所有文件操作默认为tmp/aruba
。
但是neimOo对于如何使用aruba编写场景是正确的
When I run `thor import` interactively
And I type "yes"
答案 1 :(得分:0)
以下是使用Aruba执行此操作的方法
Scenario: Test import
When I run `thor import` interactively
And I type "yes"
Then the stdout should contain "Finished. Imported 70,114 items"
在这里你可以找到很多aruba的例子 https://github.com/cucumber/aruba/blob/master/features/interactive.feature
这是实施本身 https://github.com/cucumber/aruba/blob/master/lib/aruba/cucumber.rb