MKu*_*mar 10 rake rspec rspec-rails ruby-on-rails-3
我试图在我的rspec中调用rake任务.
require "rake"
rake = Rake::Application.new
Rake.application = rake
rake.init
rake.load_rakefile
rake['rake my:task'].invoke
Run Code Online (Sandbox Code Playgroud)
但我收到了错误
Failure/Error: rake['rake db:migrate'].invoke
RuntimeError:
Don't know how to build task 'rake db:migrate'
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何在rspec代码中调用rake任务.
任何帮助将受到高度赞赏.
stu*_*rtc 12
小命名空间的问题,任务是db:migrate不rake db:migrate一样的命令行用法.
所以改成它应该有助于:
rake['db:migrate'].invoke
Run Code Online (Sandbox Code Playgroud)
Val*_*ala 11
使用Rspec的Rails更简单的解决方案:
在您的spec_helper(或rails_helper更新版本的rspec-rails):
require "rake"
Rails.application.load_tasks
Run Code Online (Sandbox Code Playgroud)
然后,当您想要调用任务时,您可以执行以下操作:
Rake::Task['my:task'].invoke
Run Code Online (Sandbox Code Playgroud)
小智 3
要将方括号中的参数传递给invoke:
rake sim:manual_review_referral_program[3,4]
Run Code Online (Sandbox Code Playgroud)
变成:
rake['sim:manual_review_referral_program'].invoke(3,4)
Run Code Online (Sandbox Code Playgroud)
如果您args在数组中,您可以执行以下操作:
args = [3,4]
rake['sim:manual_review_referral_program'].invoke(*args)
Run Code Online (Sandbox Code Playgroud)
更多信息请参见 StackOverflow 问题:如何从 Rake 任务中运行 Rake 任务?。
| 归档时间: |
|
| 查看次数: |
3447 次 |
| 最近记录: |