ruby – Chefspec重复加载库并发出警告“已经初始化的常量CONSTANT”

我有一个带有图书馆的厨师食谱,例如library.rb.它包含一个CONSTANT:

CONSTANT = 'constant'

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

(Some prefix...)warning: already initialized constant CONSTANT
(Some prefix...)warning: prevIoUs deFinition of CONSTANT was here

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

解决方法

短期内,将其更改为:

CONSTANT ||= 'constant'

从长远来看,最好使用let(),或者将常量移出测试用例,或选择任何其他方式替换常量,或者确保测试代码加载库一次,而不是多次.

编辑 – 评论中@sawa的优点:如果你的常量是零或假,那么|| =方法不会停止警告,所以你需要一个更好的解决方案,例如:

CONSTANT = 'constant' unless defined? CONSTANT

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...