我用以下命令创建了rails new --api whatever
:
gem 'rspec-rails', '~> 3.8'
在我的Gemfile
.然后,我创建了:
app/services/whatever_module/whatever_class.rb
和相应的等级库文件:
spec/services/whatever_module/whatever_class_spec.rb
现在,当我运行时:
rspec services
我收到此错误:
名称错误: 未初始化的常量 无论什么模块
如何告诉 rspec 通过模块的规范路径识别模块?
您的规范文件应该在
spec/services/distamce/whatever_class_spec.rb
.
在您的情况下,rspec 会尝试查找 WhateverModule,因为您的规范文件的路径中/whatever_module/
。您可以尝试将其更改为spec/services/foo_bar/whatever_class_spec.rb
,您将获得丢失的FooBarModule错误。
我想我想我弄清楚你错过了什么。
Rspec 不会自动要求您的应用程序文件夹,因此最初应用程序文件夹中没有可用的模块或类。
当您检查 https://github.com/rspec/rspec-rails#installation@2时,您可以看到您必须为rspec添加一些样板文件,例如rails_helper.rb
和spec_helper.rb
rails generate rspec:install
。这些负责所有与 rspec 相关的设置和应用程序文件夹的要求。
还需要在每个规范文件顶部添加require 'rails_helper'
。
完成所有这些操作后,Unable to autoload constant WhateverModule::WhateverClass
出现错误,那么您whatever_class.rb
必须如下所示
module WhateverModule
class WhateverClass
end
end
或者,您可以在 whatever_module
文件夹以外的文件中定义模块。