名称错误:具有默认 rspec 配置的单位化常量服务名称



我用以下命令创建了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.rbspec_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 文件夹以外的文件中定义模块。

最新更新