在Rspectesting中运行Rake任务

我正在构build一个集成testing套件,并且有一点逻辑,我需要一个干净的数据库。 我如何在我的一个db:test:purge运行db:test:purge任务?

我正在使用:ruby 1.9.2,rails 3.0.9,rspec 2.6

您可以调用Rake任务,如下所示:

 require 'rake' Rake::Task[name].invoke 

在这种情况下,这将导致下面的代码:

 require 'rake' Rake::Task['db:test:purge'].invoke 

当我需要执行我自己的Rake任务时,批准的答案对我来说不起作用

这是我的解决scheme

放在spec文件的顶部

 require 'rake' 

将这些行放在需要执行自定义rake任务的位置,例如,从example.rake文件中获取rake update_data

 load File.expand_path("../../../lib/tasks/example.rake", __FILE__) # make sure you set correct relative path Rake::Task.define_task(:environment) Rake::Task["update_data"].invoke 

我的环境:

 rails (4.0.0) ruby (2.0.0p195) rspec-core (2.14.7) rspec-expectations (2.14.3) rspec-mocks (2.14.4) rspec (2.14.1) rspec-rails (2.14.0) 

如果我们需要使用多个rake任务,我们可以添加

 require "rake" Rails.application.load_tasks 

然后简单地调用任何任务。

 Rake::Task['sync:process_companies'].invoke 

虽然我不能确认,如果它更慢,因为它加载所有的任务