Ruby on rails 我的rake任务使用OptionParser来处理参数。如何从minitest测试用例中调用它?
我从命令行调用rake任务,如下所示Ruby on rails 我的rake任务使用OptionParser来处理参数。如何从minitest测试用例中调用它?,ruby-on-rails,rake,minitest,rake-task,Ruby On Rails,Rake,Minitest,Rake Task,我从命令行调用rake任务,如下所示 rake add -- --num1 1 --num2 2 require 'optparse' task :add do options = {} OptionParser.new do |opts| opts.banner = "Usage: rake add [options]" opts.on("-o", "--num1 ARG", Integer) { |x| options[:x] = x } opts.on("-t"
rake add -- --num1 1 --num2 2
require 'optparse'
task :add do
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: rake add [options]"
opts.on("-o", "--num1 ARG", Integer) { |x| options[:x] = x }
opts.on("-t", "--num2 ARG", Integer) { |y| options[:y] = y }
end.parse!
puts options[:x].to_i + options[:y].to_i
exit
end
args = %W( -- --num1=1 --num2=2)
Object.stub_const(:ARGV, args) do
Rake::Task["add"].invoke
end
任务定义如下:
rake add -- --num1 1 --num2 2
require 'optparse'
task :add do
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: rake add [options]"
opts.on("-o", "--num1 ARG", Integer) { |x| options[:x] = x }
opts.on("-t", "--num2 ARG", Integer) { |y| options[:y] = y }
end.parse!
puts options[:x].to_i + options[:y].to_i
exit
end
args = %W( -- --num1=1 --num2=2)
Object.stub_const(:ARGV, args) do
Rake::Task["add"].invoke
end
如何从测试用例中调用任务。
我能用吗
Rake::Task["add"].invoke
如果是这样,如何传递参数num1和num2?我们可以存根ARGV常量并调用rake任务。对于存根常量,我们必须使用gem‘minitest stub const’来存根常量。测试用例的相关代码如下:
rake add -- --num1 1 --num2 2
require 'optparse'
task :add do
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: rake add [options]"
opts.on("-o", "--num1 ARG", Integer) { |x| options[:x] = x }
opts.on("-t", "--num2 ARG", Integer) { |y| options[:y] = y }
end.parse!
puts options[:x].to_i + options[:y].to_i
exit
end
args = %W( -- --num1=1 --num2=2)
Object.stub_const(:ARGV, args) do
Rake::Task["add"].invoke
end
这是一个RSpec问题,但他们应该可以使用相同的方法-截短ARGV。