NameError: унифицированная константа ServiceName с конфигурацией rspec по умолчанию - PullRequest
0 голосов
/ 14 января 2019

Я создал 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: неинициализированная константа WhwhatModule

Как мне сказать rspec распознавать модуль по его пути спецификации?

1 Ответ

0 голосов
/ 15 января 2019

Ваш файл спецификации должен быть в

spec/services/distamce/whatever_class_spec.rb.

В вашем случае rspec пытается найти модуль WheverModule из-за /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.

...