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

时间:2015-09-03 16:30:48

标签: ruby-on-rails rspec rake

我猜这与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

1 个答案:

答案 0 :(得分:14)

Rake文档说invoke只会在需要"需要时执行任务"。以下内容来自另一个SO answer,可能有助于澄清:

  • Rake :: Task [" build"]。执行总是执行任务,但它没有执行其依赖

  • Rake :: Task [" build"]。invoke 执行依赖项,但它只执行任务 它尚未被调用

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