【问题标题】:Rspec testing rake tasksRspec 测试 rake 任务
【发布时间】:2015-12-29 13:31:25
【问题描述】:

我有一个简单的 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”,即使它被调用了 3 次。

【问题讨论】:

    标签: ruby-on-rails ruby rspec rake


    【解决方案1】:

    事实证明,当一个 rake 任务已经 invoked 时,它不会再次运行。您必须在调用后reenable 任务或使用execute

    【讨论】:

    • 非常感谢您发布此信息。解决这个问题花费了我太多时间。
    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 2011-10-17
    • 2011-02-06
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多