【问题标题】:My rake task uses OptionParser for handling arguments. How can I invoke it from my minitest test case?我的 rake 任务使用 OptionParser 来处理参数。如何从我的 minitest 测试用例中调用它?
【发布时间】:2018-08-09 04:43:48
【问题描述】:

我从命令行调用 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

如何从测试用例调用任务。 可以用吗

Rake::Task["add"].invoke

如果是这样,如何传递参数 num1 和 num2 ?

【问题讨论】:

标签: ruby-on-rails rake minitest rake-task


【解决方案1】:

我们可以存根 ARGV 常量并调用 rake 任务。对于存根常量,我们必须使用 gem 'minitest-stub-const' 来存根常量。测试用例的相关代码如下;

args = %W( -- --num1=1 --num2=2)
Object.stub_const(:ARGV, args) do
  Rake::Task["add"].invoke
end

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2014-04-21
    • 2015-04-01
    • 2011-01-03
    • 2015-03-22
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多