在RSpec中,我指定了Rake任务所期望的行为。任务是在位于根或项目的Rakefile中定义的。
根据我的理解,下面的代码以在控制台中运行rake xml:export
的方式运行任务。
require 'spec_helper'
RSpec.describe 'xml:export' do
load 'Rakefile'
let(:task) { Rake::Task['xml:export'] }
it '' do
task.execute
end
end
但是,该任务需要作为rake xml:export date=2020-01-01
运行,因为它希望传入ENV['date']
。
如何在我的规范中提供执行任务的日期?
我试过system('rake xml:export date=2020-01-01')
而不是task.execute
,但它不起作用。
您是否尝试过使用Rspec中的挂钩before
来定义您的日期?(cf:https://www.rubydoc.info/github/rspec/rspec-core/RSpec%2FCore%2FHooks:before(
例如,您可以将您的日期定义为:
before do
ENV["date"] = "2020-01-01"
end
it '' do
task.execute
end
然而,前面的例子并不是最推荐的,这里有一个有趣的答案(https://stackoverflow.com/a/27586912/11018979)
或
before do
allow(ENV).to receive(:[]).with("date").and_return("2020-01-01")
end
it '' do
task.execute
end