Chefspec загружает библиотеки повторно и выдает предупреждение "уже инициализированная константа"
У меня есть поваренная книга с библиотекой, например library.rb
, Он содержит CONSTANT
:
CONSTANT = 'constant'
Когда я пишу модульные тесты для этой кулинарной книги, она всегда дает мне предупреждение:
(Some prefix...)warning: already initialized constant CONSTANT
(Some prefix...)warning: previous definition of CONSTANT was here
Предупреждения появляются неоднократно, столько раз, сколько примеров (тестовых случаев) минус один. Я думаю, это потому, что chefspec загружает библиотеки один раз для каждого примера. Может кто-нибудь сказать мне, как заставить библиотеки загружаться только один раз, или как отключить предупреждение?
1 ответ
В краткосрочной перспективе измените его на:
CONSTANT ||= 'constant'
В долгосрочной перспективе лучше использовать let()
или для удаления константы из тестового примера, или для выбора любого другого способа замены константы, или для обеспечения того, чтобы код тестирования загружал библиотеку один раз, а не много раз.
Редактировать - Хорошая точка зрения @sawa в комментариях: если ваша константа nil
или же false
тогда ||=
подход не останавливает предупреждения, поэтому вам нужно лучшее решение, такое как:
CONSTANT = 'constant' unless defined? CONSTANT