Как мне интегрировать RSpec с Rake, Rails и моими существующими тестами? - PullRequest
3 голосов
/ 23 ноября 2010

Я бы хотел начать использовать RSpec для написания тестов для моего приложения на Rails, но у меня есть много существующих тестов, написанных с использованием Test :: Unit.Я хотел бы по-прежнему иметь возможность запускать все тесты (или все модульные тесты, функциональные тесты и т. Д.) Просто из командной строки с чем-то вроде

rake test:units

или чем-то еще, ипусть он запускает все модульные тесты, написаны ли они с помощью Test :: Unit или RSpec.И я определенно не хочу тратить кучу времени на преобразование моих существующих тестов в RSpec;это не стартер.

Сейчас я думаю, что хотел бы, чтобы мои тесты RSpec существовали наряду с моими существующими тестами, в тесте / модуле, тесте / функционале и т. д. Каков наилучший способчтобы сделать это?Или это вообще хорошая идея?То есть, я довольно новичок в RSpec (и Ruby и Rails, если на то пошло), так что, возможно, лучше хранить RSpecs отдельно.Независимо от того, где они хранятся в файловой системе, мне все равно нужно будет иметь возможность запускать все тесты с помощью одной задачи rake, и мне нужно будет собирать номера покрытия кода для всего корпуса теста с использованием rcov, чтоЯ уже делаю с моими существующими тестами.

1 Ответ

6 голосов
/ 23 ноября 2010

edit: исправлены некоторые неправильные утверждения о структуре каталогов Rspec rails.

<ч />

Rspec обычно помещает свои тесты в отдельную структуру каталогов, spec/, которая выглядит следующим образом:

spec/
├── controllers
│   ├── pages_controller_spec.rb
│   └── users_controller_spec.rb
├── helpers
│   ├── pages_helper_spec.rb
│   └── users_helper_spec.rb
├── models
│   └── user_spec.rb
├── spec_helper.rb
└── views
    ├── pages
    │   └── home.html.haml_spec.rb
    └── users
        ├── index.html.haml_spec.rb
        └── show.html.haml_spec.rb

Имеется отдельный каталог для моделей, контроллеров и представлений. Я не уверен точно, как Test :: Unit структурирует свои каталоги, но это структура каталогов по умолчанию для Rspec. Обратите внимание на файл spec_helper.rb. Этот файл сообщает Rspec, где искать спецификации, и имеет несколько других параметров конфигурации.

Ваша лучшая ставка, вероятно, состоит в том, чтобы просто следовать рекомендациям rspec для получения spec dir и создать собственную задачу rake, которая запускает как модульные, так и rspec-тесты. Примерно так:

task :run_tests do
  system("rspec spec/")
  system("rake test:units")
end

Это запустит ваши тесты rspec, а затем по очереди ваши Test :: Unit.

...