Rspec测试耙任务

Car*_*ham 5 ruby rake rspec ruby-on-rails

我有一个简单的rake任务用puts

namespace :atask
  task something: :environment do
    puts 'Foo'
  end
end
Run Code Online (Sandbox Code Playgroud)

我的规格如下

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
Run Code Online (Sandbox Code Playgroud)

如您所见,它具有3个上下文和3个块。因此,我应该在控制台中三遍看到“ Foo”,每次调用任务一次。但是,即使被调用了三次,我在控制台中也只能看到一次“ Foo”。

Car*_*ham 5

事实证明,完成rake任务后invoke,将不会再次运行它。您必须reenable在调用后使用该任务或使用execute