我有一个带库的厨师食谱,例如library.rb
。它包含CONSTANT
:
CONSTANT = 'constant'
当我为这本食谱编写单元测试时,它总是给我警告:
(Some prefix...)warning: already initialized constant CONSTANT
(Some prefix...)warning: previous definition of CONSTANT was here
警告反复出现,与示例(测试用例)的数量减去一样多次。我认为这是因为chefspec为每个示例加载一次库。有人可以告诉我如何只加载一次库,或者如何禁用警告信息?
答案 0 :(得分:6)
短期内,将其更改为:
CONSTANT ||= 'constant'
长期来说,最好使用let()
,或者将常量移出测试用例,或选择任何其他方式替换常量,或者确保测试代码加载库一次,没多少次。
编辑 - 评论中@sawa的好点:如果您的常量为nil
或false
,那么||=
方法不会停止警告,所以你会想要一个更好的解决方案,例如:
CONSTANT = 'constant' unless defined? CONSTANT