Rspec测试Rake任务

5

我有一个简单的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个it块。因此,每次调用任务时我应该在控制台中看到'Foo'三次。然而,尽管它被调用了三次,但我在控制台中只看到一次'Foo'。

1个回答

5

事实证明,当使用invoke运行一次任务后,它不会再次运行。您需要在调用后重新启用该任务,或者使用execute命令。


非常感谢您发布这个。修复这个问题花费了我太多的时间。 - Chris Hough

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接