Bru*_*ali 1 ruby rspec ruby-on-rails
尝试从根路径运行我的规范时,我经常收到此错误:
Failure/Error: routes { MyEngineName::Engine.routes }
NameError:
uninitialized constant MyEngineName::MyEngineName::Engine
Run Code Online (Sandbox Code Playgroud)
或者当从 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
Run Code Online (Sandbox Code Playgroud)
我的引擎文件是:
# my_engine_name/engine.rb
module MyEngineName
class Engine < ::Rails::Engine
isolate_namespace MyEngineName
engine_name 'my_engine_name'
# ommited...
end
end
Run Code Online (Sandbox Code Playgroud)
我能做什么?
谢谢指教!:)
在您的规范中使用完全限定的名称,而不是将您的规范放在模块中。
做:
RSpec.describe Foo::Bar::Baz do
end
Run Code Online (Sandbox Code Playgroud)
别:
module Foo
module Bar
RSpec.describe Baz do
end
end
end
Run Code Online (Sandbox Code Playgroud)
除了在 3 个缩进级别编写规范是丑陋的事实之外,因为它会尝试解决Foo命名空间中的所有内容,因此您必须使用它::SomeOtherModule来引用其他所有内容.
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |