Тестирование монтируемого двигателя Rails 3.1 RC5 на Spork - PullRequest
4 голосов
/ 16 августа 2011

Я смог настроить RSpec, Cucumber и Autotest для работы с моим Rails 3.1 Mountable Engine. Там, где все рушится, пытается интегрировать Spork в микс. Spork работает нормально, и мои тесты используют Spork, но проблема в том, что Spork не перезагружает модели, если я не отключаю сервер Spork, который не совсем эффективен. Я также использую factory_girl. Я пробовал разные вещи, используя Spork.trap_method , но пока ничего не получалось.

Вот драгоценные камни, которые я использую (хотя с тех пор я отказался от Spork в своем проекте из-за горя, который он вызывал у меня):

  • рельсы (3.1.0.rc5)
  • spork (0.9.0.rc9)
  • rspec (2.6.0)
  • rspec-core (2.6.4)
  • rspec-ожидания (2.6.0)
  • rspec-mocks (2.6.0)
  • rspec-рельсы (2.6.1)
  • factory_girl (2.0.3)
  • factory_girl_rails (1.1.0)
  • огурец (1.0.2)
  • огурцы-рельсы (1.0.2)

Спасибо

-Damien

1 Ответ

2 голосов
/ 20 сентября 2011

Я разобрался в своей проблеме. Это был на самом деле автотест, а не Spork. Я перешел с монтируемого двигателя на стандартный двигатель (плагин), так как он стал лучше подходить для того, что мне нужно.

Сейчас я использую выпущенную версию Rails 3.1.

В этом сценарии я подумал, что все будет проще, но я столкнулся с той же проблемой. В любом случае, это оказалось исправлением для тестирования движка без пространства имен (монтируемого), хотя с некоторыми изменениями пути я думаю, что он будет работать.

Добавить файл .autotest в корень проекта со следующим:

Autotest.add_hook :initialize do |at|
  at.add_mapping %r%^app/models/(.*)\.rb$% do |_, m|
    "spec/models/#{m[1]}_spec.rb"
  end

  at.add_mapping %r%^app/controllers/(.*)\.rb$% do |_, m|
    ["spec/controllers/#{m[1]}_spec.rb",
    "spec/functional/#{m[1]}_spec.rb"]
  end

  at.add_mapping %r%^app/helpers/(.*)_helper.rb% do |_, m|
    ["spec/views/#{m[1]}_view_spec.rb",
    "spec/functional/#{m[1]}_controller_spec.rb"]
  end

  at.add_mapping %r%^app/views/(.*)/% do |_, m|
    ["spec/views/#{m[1]}_view_spec.rb",
    "spec/functional/#{m[1]}_controller_spec.rb"]
  end
end

Я нашел решение, когда наткнулся на этот ответ на другой вопрос: как настроить автотест для правильного отслеживания изменений в источнике приложения? , а также другие примеры, найденные в Интернете.

Надеюсь, это поможет кому-то еще.

[Изменить 2011-09-20] Исправлена ​​проблема с огурцом / Spork с помощью "хака". Внутри блока Spork.each_run я принудительно перезагрузил модели и контроллеры, например так:

  ENGINE_ROOT=File.join(File.dirname(__FILE__), '../../')
  # Couldn't get spork to reload models, hence the reason for this hack
  Dir[File.join(ENGINE_ROOT, "app/models/*.rb")].each {|f| load f }
  # or controllers...
  Dir[File.join(ENGINE_ROOT, "app/controllers/*.rb")].each {|f| load f }

Кажется, должен быть лучший способ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...