我有一個耙使用OptionParser
得到一個參數(12.0)任務Rake任務。測試使用OptionParser使用RSpec
任務看起來像
require 'optparse'
namespace :local do
task :file do
options = Hash.new
opts = OptionParser.new
opts.on('--file FILE') { |file|
options[:file] = file
}
args = opts.order!(ARGV) {}
opts.parse!(args)
# Logic goes here.
# The following is enough for this question
String.new(options[:file])
end
end
可以執行任務運行rake local:file -- --file=/this/is/a/file.ext
現在我想使用RSpec來驗證新的字符串被創建,但我不知道怎麼傳文件選項內的選項。
這是我的規格
require 'rake'
RSpec.describe 'local:file' do
before do
load File.expand_path("../../../tasks/file.rake", __FILE__)
Rake::Task.define_task(:environment)
end
it "creates a string" do
expect(String).to receive(:new).with('zzzz')
Rake.application.invoke_task ("process:local_file")
end
end
,正確我得到
#<String (class)> received :new with unexpected arguments
expected: ("zzzz")
got: (nil)
但如果我嘗試
Rake.application.invoke_task ("process:local_file -- --file=zzzz")
我得到
Don't know how to build task 'process:local_file -- --file=zzzz' (see --tasks)
我也試過Rake::Task["process:local_file"].invoke('--file=zzzz')
但仍然got: (nil)
。
我應該如何通過在規範的選項?
感謝
我從來沒有這麼做過,所以我不能發表評論,但這個看起來像你需要:http://stackoverflow.com/questions/825748/how-to-pass-command-line-arguments-to-a-rake-task?rq = 1 –
感謝您指出了後出來。我改變了我的任務,現在我可以運行規範。 – macsig
您好,歡迎光臨。 –