rake spec不使用rails环境

时间:2009-05-24 12:35:48

标签: ruby-on-rails ruby rspec rake

我正在尝试在rails项目中使用rspec,我刚刚升级到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!

我通过从应用程序的根目录调用rake规范来启动rspec。

关于在这种情况下可能缺少什么的任何想法?

2 个答案:

答案 0 :(得分:6)

你确实需要在你编写的每个spec文件中包含spec_helper.rb ....

您可以通过以下方式运行各个规范:

$ spec specs/models/person_spec.rb

而不是始终运行整个规范套件

答案 1 :(得分:0)

我没有使用规范,所以这可能无法解决您的问题,但如果您正在编写自己的rake任务并需要rails环境,那么您必须要求它。

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