在RSpec中多次运行Rake任务返回nil?

dai*_*no3 11 rake rspec ruby-on-rails

我猜这与Rake读取文件一次而不是倒带有关吗?但是,我不确定.有任何想法吗?

require 'rake'
require 'rails_helper'

describe 'MyRakeTask' do

  before(:all) do
    Rails.application.load_tasks
  end

  it 'does something sweet' do
    Rake::Task["namespace:my_task"].invoke # runs task
  end

  it 'but it doesnt do it again' do
    Rake::Task["namespace:my_task"].invoke # returns nil
  end

end
Run Code Online (Sandbox Code Playgroud)

eee*_*ean 15

文档说invoke只运行任务,如果它的"需要".以下内容来自另一个SO 答案,可能有助于澄清:

  • Rake :: Task ["build"].执行总是执行任务,但它不执行其依赖项

  • Rake :: Task ["build"].invoke执行依赖项,但它只在尚未调用的情况下执行任务

  • Rake :: Task ["build"].reenable首先重置任务的already_invoked状态,然后允许任务再次执行,依赖项和所有.

  • 谢谢!!“重新启用”就是这样做的。 (2认同)