Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1400050
  • 博文数量: 244
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 2704
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-26 08:17
个人简介

微信公众号:杰夫弹弹看

文章分类

全部博文(244)

文章存档

2018年(4)

2017年(32)

2016年(25)

2015年(28)

2014年(27)

2013年(34)

2012年(25)

2011年(30)

2010年(39)

分类: Python/Ruby

2014-03-30 12:24:06

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方式,如下

expect { dosomething }.to  raise_error

介绍了这么多,我们的问题是什么,rubocop里默认有个multi-line规则,就是代码里如果有block 方式 { ...},

点击(此处)折叠或打开

  1. [1, 2, 3].each { |i|
  2.   puts i.to_s
  3.   ...
  4. }
rubocop 会提示上面的例子{.. }的warning,推荐你采用single-line 或者 do .. end的block方式, 采用do.. end 为例


点击(此处)折叠或打开

  1. [1, 2, 3].each do |i|
  2.   puts i.to_s
  3.   ...
  4. end

但是,实际测试expect断言的block中,很可能长度有超过80字符的长度的时候,那么,就得采取几种方法,避过可恶的rubocop警告
方法1: 在.rubocop.yml文件禁掉Blocks,因为默认的是
Blocks:
  Enabled: true
这个方法显然是有点过了,因为它会将这个检查对整个代码都生效了,所以不是很好

方法2:使用其他block方式,绕过{}, 比如

点击(此处)折叠或打开

  1. expected = expect do
  2.   ...
  3.   ...
  4. end
  5. expected.to raise_error
或者

点击(此处)折叠或打开

  1. expect do
  2.   ...
  3.   ...
  4. end.to raise_error



参考:
1. 
2. 
3. 
 
阅读(2441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~