Запуск задач Rake в тестах Rspec - программирование
Подтвердить что ты не робот

Запуск задач Rake в тестах Rspec

Я создаю набор тестов интеграции, и есть одна бит логики, для которой мне нужна чистая база данных. Как запустить задачу db:test:purge внутри одного из моих тестов?

Я использую: ruby ​​1.9.2, rails 3.0.9, rspec 2.6

4b9b3361

Ответ 1

Вы можете вызвать задачи Rake следующим образом:

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

В этом случае это приведет к следующему коду:

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

Ответ 2

Утвержденный ответ не сработал у меня, когда мне нужно было выполнить свою собственную задачу рейка

Здесь мое решение

Вставьте верхнюю часть спецификационного файла

require 'rake'

Поместите эти строки, где вам нужно выполнить свою собственную команду rake, например. rake update_data​​strong > из файла 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) 

Ответ 3

Если нам нужно использовать несколько задач рейка, мы можем добавить

require "rake"
Rails.application.load_tasks

Затем просто вызовите любую задачу.

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

Хотя я не могу подтвердить, если он медленнее, потому что он загружает все задачи