Chefspec重复加载库并提供警告"已经初始化的常量CONSTANT"

时间:2015-03-17 07:26:49

标签: ruby chef chefspec

我有一个带库的厨师食谱,例如library.rb。它包含CONSTANT

CONSTANT = 'constant'

当我为这本食谱编写单元测试时,它总是给我警告:

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

警告反复出现,与示例(测试用例)的数量减去一样多次。我认为这是因为chefspec为每个示例加载一次库。有人可以告诉我如何只加载一次库,或者如何禁用警告信息?

1 个答案:

答案 0 :(得分:6)

短期内,将其更改为:

CONSTANT ||= 'constant'

长期来说,最好使用let(),或者将常量移出测试用例,或选择任何其他方式替换常量,或者确保测试代码加载库一次,没多少次。

编辑 - 评论中@sawa的好点:如果您的常量为nilfalse,那么||=方法不会停止警告,所以你会想要一个更好的解决方案,例如:

CONSTANT = 'constant' unless defined? CONSTANT