我使用以下方法创建了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
我收到此错误:
NameError:未初始化的常量WhateverModule
如何告诉rspec通过其spec路径识别模块?
答案 0 :(得分:1)
您的规格文件应位于
spec/services/distamce/whatever_class_spec.rb
。
在这种情况下,rspec会由于在规范文件的路径中使用 /whatever_module/
而试图找到WhateverModule。您可以尝试将其更改为spec/services/foo_bar/whatever_class_spec.rb
,并且会丢失FooBarModule错误。
我想我知道你错过了什么。
Rspec不会自动需要您的应用程序文件夹,因此最初应用程序文件夹中没有可用的模块或类。
当您检查https://github.com/rspec/rspec-rails#installation @ 2时,您会发现必须为rails_helper.rb
和spec_helper.rb
添加一些rspec的样板文件。这些负责所有与rspec相关的设置以及app文件夹的要求。
还需要在每个规格文件的顶部添加rails generate rspec:install
。
完成所有这些操作并收到错误require 'rails_helper'
后,您的Unable to autoload constant WhateverModule::WhateverClass
必须看起来像这样
whatever_class.rb
或者您可以在module WhateverModule
class WhateverClass
end
end
文件夹之外的文件中定义模块。