vmc*_*oud 5 ruby chef-infra chefspec
我有一个带图书馆的厨师食谱,例如library.rb.它包含一个CONSTANT:
CONSTANT = 'constant'
Run Code Online (Sandbox Code Playgroud)
当我为这本食谱编写单元测试时,它总是给我警告:
(Some prefix...)warning: already initialized constant CONSTANT
(Some prefix...)warning: previous definition of CONSTANT was here
Run Code Online (Sandbox Code Playgroud)
警告反复出现,与示例(测试用例)的数量减去一样多.我认为这是因为chefspec为每个示例加载一次库.有人能告诉我如何只加载一次库,或者如何禁用警告信息?
短期内,将其更改为:
CONSTANT ||= 'constant'
Run Code Online (Sandbox Code Playgroud)
从长远来看,最好使用a let(),或将常量移出测试用例,或选择任何其他方式替换常量,或确保测试代码加载库一次,而不是多次.
编辑 - @sawa在评论中的好点:如果你的常数是nil或者false,那么||=方法不会停止警告,所以你需要一个更好的解决方案,例如:
CONSTANT = 'constant' unless defined? CONSTANT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |