我想在我的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任务。
任何帮助将高度赞赏。
要通过在方括号中的参数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任务? 。
小命名空间的问题,任务db:migrate
不是rake db:migrate
像在命令行中使用。
因此,改变这个应该有所帮助:
rake['db:migrate'].invoke
对于使用RSpec Rails的一个简单的办法:
在您的spec_helper
(或rails_helper
对于RSpec的护栏的新版本):
require "rake"
Rails.application.load_tasks
然后,当你要调用你的任务,你可以做到以下几点:
Rake::Task['my:task'].invoke