Как сказать автотест, чтобы правильно отслеживать изменения в исходном приложении? - PullRequest
1 голос
/ 04 июня 2010

Я хочу получить автотест для запуска приемочных тестов Steak всякий раз, когда изменяется один из соответствующих файлов приложения rails. Изучив собственные конфигурации автотеста Rspec и Cucumber, я пытаюсь выполнить следующие сопоставления:

<code>
Autotest.add_hook :initialize do |at|
  at.add_mapping(%r%^spec/acceptance/.*_spec.rb$%, true) { |filename, _|
    filename
  }</p>

<p>at.add_mapping(%r%^app/(models|controllers|helpers|lib)/.<em>rb$%) { 
    at.files_matching %r%^spec/acceptance/.</em>_spec.rb$%
  }</p>

<p>at.add_mapping(%r%^app/views/(.*)/.<em>rb$%) { 
    at.files_matching %r%^spec/acceptance/.</em>_spec.rb$%
  }
end

первый работает: каждый раз, когда изменяется спецификация Steak, он запускается снова.

но второй и третий нет. изменение любых исходных файлов в подкаталогах / app просто игнорируется.

Как правильно заставить эти сопоставления работать?

спасибо Оливер

Ответы [ 2 ]

3 голосов
/ 28 августа 2010

Я только что изменил свой .autotest файл, добавив:

Autotest.add_hook :initialize do |at|
  at.add_mapping(%r%^spec/acceptance/.*_spec.rb$%, true) { |filename, _|
    filename
  }

  at.add_mapping(%r%^app/(models|controllers|helpers|lib)/.*rb$%, true) {
    at.files_matching %r%^spec/acceptance/.*_spec.rb$%
  }

  at.add_mapping(%r%^app/views/(.*)$%, true) {
    at.files_matching %r%^spec/acceptance/.*_spec.rb$%
  }
end

И это работает, но я не знаю побочных эффектов вызова приемочных испытаний перед другими (флаг true на add_mapping)

0 голосов
/ 07 октября 2011

Для RSpec 1.3:

Мне пришлось использовать ловушку: post_initialize, потому что встроенная поддержка RSpec начинается с очистки всех существующих отображений. Таким образом, он очищал их, а затем добавлял сопоставления RSpec по умолчанию. Но с помощью хука: post_initialize (вместо: initialize в первой строке) это исправили.

Мне также пришлось поместить все это в autotest / Discover.rb вместо .autotest.

...