rubocop是根据社区流行的ruby编码规范写的一个静态代码分析工具,
rpsec是ruby界流行的BDD测试工具
rpsec里有类似断言的关键字,expect,比如
1)判定某个变量等于123
expect(actual).to eq(123)
2)判断某个boolean值为true
expect(actual).to be true
expect还支持raise,throw错误的断言,采用block方式,如下
1 | expect { dosomething }.to raise_error |
介绍了这么多,我们的问题是什么,rubocop里默认有个multi-line规则,就是代码里如果有block 方式 { …},
1 | [1, 2, 3].each { |i| |
rubocop 会提示上面的例子{.. }的warning,推荐你采用single-line 或者 do .. end的block方式, 采用do.. end 为例
1 | [1, 2, 3].each do |i| |
但是,实际测试expect断言的block中,很可能长度有超过80字符的长度的时候,那么,就得采取几种方法,避过可恶的rubocop警告
方法1: 在.rubocop.yml文件禁掉Blocks,因为默认的是
1 | Blocks: |
这个方法显然是有点过了,因为它会将这个检查对整个代码都生效了,所以不是很好
方法2:使用其他block方式,绕过{}, 比如
1 | expected = expect do |
或者
1 | expect do |
参考资料: