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
Другие вопросы по тегам