NameError:具有默认rspec配置的统一常量ServiceName

时间:2019-01-14 20:47:58

标签: ruby-on-rails ruby rspec ruby-on-rails-5 rspec-rails

我使用以下方法创建了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路径识别模块?

1 个答案:

答案 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.rbspec_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 文件夹之外的文件中定义模块。