如何调用rspec的rake任务(How to call a rake task in rspec)

2019-08-03 12:50发布

我想在我的RSpec调用rake任务英寸

  require "rake"
  rake = Rake::Application.new
  Rake.application = rake
  rake.init
  rake.load_rakefile
  rake['rake my:task'].invoke

但我得到错误

 Failure/Error: rake['rake db:migrate'].invoke
 RuntimeError:
   Don't know how to build task 'rake db:migrate'

有没有人有一个想法,我们如何能在rspec的代码中调用rake任务。

任何帮助将高度赞赏。

Answer 1:

要通过在方括号中的参数invoke

rake sim:manual_review_referral_program[3,4]

变为:

rake['sim:manual_review_referral_program'].invoke(3,4)

如果您args是一个数组,你可以做到以下几点:

args = [3,4]
rake['sim:manual_review_referral_program'].invoke(*args)

:在这个问题的StackOverflow更多信息如何从Rake任务中运行Rake任务? 。



Answer 2:

小命名空间的问题,任务db:migrate不是rake db:migrate像在命令行中使用。

因此,改变这个应该有所帮助:

rake['db:migrate'].invoke


Answer 3:

对于使用RSpec Rails的一个简单的办法:

在您的spec_helper (或rails_helper对于RSpec的护栏的新版本):

require "rake"
Rails.application.load_tasks

然后,当你要调用你的任务,你可以做到以下几点:

Rake::Task['my:task'].invoke


文章来源: How to call a rake task in rspec