我刚刚将一些现有的rails测试转换为rspec,现在名称空间中的测试失败了。
例如,在下面的示例中,AccountController规范通过,而ChildrenController失败时出现以下错误:
in `load_missing_constant': Expected /.../app/controllers/admin/children_controller.rb to define Admin::ChildrenController (LoadError)app/控制器/帐户控制器.app
class AccountController < ApplicationController规范/控制器/帐户控制器_spec.rb
require 'spec_helper'
describe AccountController do
#...
endapp/控制器/admin/admin_app
class Admin::ChildrenController < ApplicationControllerspec/controllers/admin/children_controller_spec.rb
require 'spec_helper'
describe Admin::ChildrenController do
include ::ControllerHelper
#...
end我在用
我试过使用命名空间定义,但到目前为止还没有结果-有什么想法吗?
发布于 2010-12-21 10:48:37
张贴答案,以防任何人在这方面的另一次绊倒!
最后,我通过将规范扁平化来修正它,如下所示:
app>controllers>admin>children_controller.rb
class Admin::ChildrenController < ApplicationController
spec>controllers>children_controller_spec.rb
require 'spec_helper'
describe Admin::ChildrenController do 发布于 2012-06-19 12:24:11
另一种解决办法是:
通过将类定义为字符串,它将正常加载:
# children_controller_spec.rb
require 'spec_helper'
describe "Admin::ChildrenController" do
# -something-
end这将在spec/controller/admin目录中工作。
编辑:在2.10.x中不工作
发布于 2012-06-22 14:01:39
我也有同样的问题,不愿意将测试放在较低的目录中。就我而言,是斯波克把事情搞砸了。
准确地说:
Spork.each_run do
ActiveSupport::Dependencies.clear
end我放置了一个检查程序,如果正在运行,否则您应该忽略这一行。
Spork.each_run do
if /spork/i =~ $0 || RSpec.configuration.drb?
ActiveSupport::Dependencies.clear
end
endhttps://stackoverflow.com/questions/4493632
复制相似问题