xen*_*tek 49 ruby tdd rake rspec ruby-on-rails-3
我正在构建一个集成测试套件,我需要有一个逻辑,我需要一个干净的数据库.如何在我db:test:purge
的一个测试中运行任务?
我正在使用:ruby 1.9.2,rails 3.0.9,rspec 2.6
小智 55
您可以按如下方式调用Rake任务:
require 'rake'
Rake::Task[name].invoke
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这将导致以下代码:
require 'rake'
Rake::Task['db:test:purge'].invoke
Run Code Online (Sandbox Code Playgroud)
Ser*_*kyy 34
当我需要执行自己的rake任务时,批准的答案对我不起作用
这是我的解决方案
放在spec文件的顶部
require 'rake'
Run Code Online (Sandbox Code Playgroud)
将这些行放在需要执行自定义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
Run Code Online (Sandbox Code Playgroud)
我的环境:
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)
Run Code Online (Sandbox Code Playgroud)
cod*_*hal 11
如果我们需要使用多个rake任务,我们可以添加
require "rake"
Rails.application.load_tasks
Run Code Online (Sandbox Code Playgroud)
然后简单地调用任何任务.
Rake::Task['sync:process_companies'].invoke
Run Code Online (Sandbox Code Playgroud)
虽然我无法确认它是否较慢,因为它加载了所有任务
归档时间: |
|
查看次数: |
18395 次 |
最近记录: |