Rspec测试rake任务

时间:2015-10-01 13:13:13

标签: ruby-on-rails ruby rspec rake

我有一个简单的rake任务,其中包含puts

namespace :atask
  task something: :environment do
    puts 'Foo'
  end
end

我的规格如下

describe 'atask:something' do
  before { MyApp.Application.load_tasks }

  context 'one' do
    it do
      Rake::Task['atask:something'].invoke
    end
  end

  context 'two' do
    it do
      Rake::Task['atask:something'].invoke
    end
  end

  context 'three' do
    it do
      Rake::Task['atask:something'].invoke
    end
  end
end

你可以看到它有3个上下文,3个块。所以我应该在控制台中看到'Foo'三次,每次调用任务一次。但是,我只在控制台中看到“Foo”一次,即使它被调用了三次。

1 个答案:

答案 0 :(得分:4)

事实证明,当佣金任务invoke时,它将不会再次运行。调用后您必须reenable任务或使用execute