尝试从根路径运行我的规范时,我经常遇到此错误:
Failure/Error: routes { MyEngineName::Engine.routes }
NameError:
uninitialized constant MyEngineName::MyEngineName::Engine
当从spec / dummy运行服务器并转到localhost:3000时,同样的情况发生但MyEngineName::MyEngineName::ApplicationController
在测试中,我需要声明路线的来源:
require 'rails_helper'
module MyEngineName
module Companies
RSpec.describe UsersController, type: :controller do
routes { MyEngineName::Engine.routes }
render_views
# ommited...
end
end
end
我的引擎文件是:
# my_engine_name/engine.rb
module MyEngineName
class Engine < ::Rails::Engine
isolate_namespace MyEngineName
engine_name 'my_engine_name'
# ommited...
end
end
我该怎么办?
谢谢你的建议! :)
答案 0 :(得分:4)
在规范中使用完全限定名称,而不是将规范放在模块中。
执行:
RSpec.describe Foo::Bar::Baz do
end
不要:
module Foo
module Bar
RSpec.describe Baz do
end
end
end
除了在三个缩进级别编写规范是丑陋的事实,因为你要求通过更改上下文来启动私有,因为它将尝试解析Foo
命名空间中的所有内容,以便您必须使用::SomeOtherModule
来引用其他所有内容。