Ruby on rails 我的rake任务使用OptionParser来处理参数。如何从minitest测试用例中调用它?

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任务,如下所示

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。