我构建了一个集成测试套件,并且有一点逻辑需要我有一个干净的数据库。我如何在我的一个测试中运行db:test:purge
任务?在Rspec测试中运行Rake任务
我使用:红宝石1.9.2,3.0.9导轨,RSpec的2.6
我构建了一个集成测试套件,并且有一点逻辑需要我有一个干净的数据库。我如何在我的一个测试中运行db:test:purge
任务?在Rspec测试中运行Rake任务
我使用:红宝石1.9.2,3.0.9导轨,RSpec的2.6
您可以调用Rake任务如下:
require 'rake'
Rake::Task[name].invoke
在这种情况下,这将导致在下面的代码:
require 'rake'
Rake::Task['db:test:purge'].invoke
批准的回答并没有为我工作,当我需要执行我自己的耙子任务
这是我的解决方案
放在规范文件
require 'rake'
放置在您需要执行自定义rake任务这些线路,例如顶部耙update_data从文件example.rake
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)
嗨,而不是我已经使用_Rails.application.load_tasks_,下面需要'耙'加载任务。这是一个好的解决方案吗? – coderVishal
'Rake :: Task.define_task(:environment)'避免了'RuntimeError:不知道如何构建任务'环境'(请参阅 - 任务)' – s2t2
我正在使用:'Rake.application。 rake_require“tasks/task-name”加载正在测试的特定任务,而不是使用Rails.application加载所有任务。 load_tasks'(Rails 5,Rspec 3.5) – Steve
如果我们需要使用多个耙任务,我们可以添加
require "rake"
Rails.application.load_tasks
然后只需调用任何任务。
Rake::Task['sync:process_companies'].invoke
虽然如果慢,因为它加载的所有任务,我不能确认
不相同RSpec的:http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within -a-ruby-script –