Rake Spec не использует среду рельсов - PullRequest
6 голосов
/ 24 мая 2009

Я пытаюсь использовать rspec в проекте rails, который я только что обновил до rails 2.3.2. Я установил rspec 1.2.6 и rspec-rails 1.2.6 как плагины в приложении.

Моя проблема в том, что спецификации не имеют доступа к классам моего приложения или какой-либо из стандартных библиотек rails.

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

/app/models/person.rb:1: uninitialized constant ActiveRecord (NameError)
        from ./spec/models/person_spec.rb:1:in `require'
    from ./spec/models/person_spec.rb:1
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load'
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load_files'
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `each'
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `load_files'
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/options.rb:99:in `run_examples'
    from /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/command_line.rb:9:in `run'
    from /Users/law/Projects/roster/vendor/plugins/rspec/bin/spec:4
rake aborted!

Я запускаю rspec, вызывая rake spec из корня приложения.

Есть идеи о том, что может отсутствовать в этой ситуации?

Ответы [ 2 ]

6 голосов
/ 30 мая 2009

вам действительно нужно включить spec_helper.rb в каждый файл спецификации, который вы пишете ....

Вы можете запустить отдельные спецификации таким образом:

$ spec specs/models/person_spec.rb

вместо того, чтобы всегда запускать весь набор спецификаций

0 голосов
/ 24 мая 2009

Я не использовал spec, так что это может не решить вашу проблему, но если вы пишете свою собственную задачу rake и вам нужна среда rails, вы должны попросить ее.

task(:task_name => :environment) do
    # Task Implementation Here
end
...