作为RSpec规范的一部分,在执行Rake任务时定义env变量



在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

最新更新