2

我有一个名为 Reports::Accountant::ApprovedTimeOffRequestsController 的控制器。它位于正确的目录中,并且文件自身中的类名是正确的。Rails 控制台和独角兽加载得很好,但 rspec 在测试期间似乎无法加载文件。

这是错误。

/Users/mdarby/.rvm/gems/ruby-1.9.3-p125-perf/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:503:in load_missing_constant': Expected /Users/mdarby/Documents/Code/ccw_32/app/controllers/reports/accountant/approved_time_off_requests_controller.rb to define Reports::Accountant::ApprovedTimeOffRequestsController (LoadError) from /Users/mdarby/.rvm/gems/ruby-1.9.3-p125-perf/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:192:in block in const_missing'

这个文件是在 Rails 3.0 堆栈上找到的,但现在我已经升级到 3.2/rspec 2.9,这已经被炸毁了。

类的定义: class Reports::Accountant::ApprovedTimeOffRequestsController < ApplicationController

编辑:

如果有人遇到这个问题,我通过删除规范来解决它:)

4

2 回答 2

0

你的测试有什么花哨的吗?我在应用程序本身有一个案例,其中多个线程试图加载同一个模块。我只能猜测在实际运行之前将其标记为已加载,然后该常量不可用于下一个。无论如何,我的解决方案是在线程之外添加一个准备块。

development.rb(你可能在 test.rb 中需要这个)

ActionDispatch::Reloader.to_prepare do
  Reports::Accountant::ApprovedTimeOffRequestsController
end
于 2012-04-06T16:48:33.527 回答
0

我打赌你正在使用Spork。我遇到了这个确切的问题。我删除了 Spork,我正在路上。给它一个重击,让我知道它是否修复了它。如果是这样的话,可能值得在 spork 上提出问题。

于 2012-07-26T09:26:52.273 回答