【问题标题】:rake spec not using the rails environmentrake 规范不使用 rails 环境
【发布时间】:2010-10-28 13:40:22
【问题描述】:

我正在尝试在我刚刚升级到 rails 2.3.2 的 rails 项目中使用 rspec。我已经在应用程序中安装了 rspec 1.2.6 和 rspec-rails 1.2.6 作为插件。

我的问题是规范无法访问我的应用程序类或任何 rails 标准库。

首先我必须使用来自 RAILS_ROOT 的完整路径来指定我想要测试的模型类,但现在当它加载类时,我得到以下内容

/app/models/person.rb:1: 未初始化的常量 ActiveRecord (NameError) 来自 ./spec/models/person_spec.rb:1:in `require' 来自 ./spec/models/person_spec.rb:1 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load_files' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `each' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `load_files' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/options.rb:99:in `run_examples' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/command_line.rb:9:in `run' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/bin/spec:4 耙中止!

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

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

【问题讨论】:

  • 我发现添加 require 'spec/spec_helper.rb' 似乎可以解决问题,但肯定这是默认包含的内容,而不是每个文件中的内容?

标签: ruby-on-rails ruby rspec rake


【解决方案1】:

您确实需要在您编写的每个规范文件中包含spec_helper.rb....

您可以通过这种方式运行单个规范:

$ spec specs/models/person_spec.rb

而不是总是运行整个规范套件

【讨论】:

  • 这就是我制定的解决方案。感觉是多余的,所以我想我希望有更好的解决方案。
【解决方案2】:

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

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

【讨论】:

  • 为帮助干杯。我不是在滚动我自己的 rake 任务,而是看了一下,它已经为相关任务运行了一个非常复杂的依赖结构。所以我不确定我想搞砸它。
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多