Pregunta Chefspec carga las bibliotecas repetidamente y da la advertencia "ya inicializado constante CONSTANTE"


Tengo un libro de cocina de chef con una biblioteca, por ejemplo. library.rb. Contiene una CONSTANT:

CONSTANT = 'constant'

Cuando escribo pruebas unitarias para este libro de cocina, siempre me avisa:

(Some prefix...)warning: already initialized constant CONSTANT
(Some prefix...)warning: previous definition of CONSTANT was here

Las advertencias aparecen repetidamente, tantas veces como el número de ejemplos (casos de prueba) menos uno. Creo que es porque chefspec carga las bibliotecas una vez para cada ejemplo. ¿Alguien podría decirme cómo hacer que las bibliotecas se carguen solo una vez, o cómo desactivar el mensaje de advertencia?


5
2018-03-17 07:26


origen


Respuestas:


A corto plazo, cambiarlo a:

CONSTANT ||= 'constant'

A largo plazo, es mejor usar un let(), o para mover la constante fuera del caso de prueba, o para elegir cualquier otra forma de reemplazar la constante, o para asegurar que el código de prueba carga la biblioteca una vez, no muchas veces.

Editar - Buen punto por @sawa en los comentarios: si tu constante es nil o false, entonces el ||= El enfoque no detiene las advertencias, por lo que querrá una mejor solución como:

CONSTANT = 'constant' unless defined? CONSTANT

6
2018-03-17 08:35