如何避免RSpec中的“无效使用==在void context中”?
问题描述:
在RSpec的,如果我有警告和有如何避免RSpec中的“无效使用==在void context中”?
x.should == 42
another_line_of_code
然后我得到一个警告约
warning: useless use of == in void context
有什么我可以做其他的比
- 打开警告关闭
- 更改为
bitbucket = (x.should == 42)
答
您还可以使用actual.should be == expected
。这只取决于你认为看起来漂亮的东西!
答
RSpec的-2有一个eq(expected)
匹配的作品就像==
没有警告:
actual.should eq(expected)
答
用途:
x.should eq(42)
或者:
x.should be == 42
或移动x.should == 42
,这样它的它块内的最后一行。
对于那些想法但是为什么?
我是一个完整的小白到Ruby,但这里是我的理解:
的警告来自红宝石像x.should == 42
陈述或者1 == 1
返回值。如果这个返回值没有被实际使用(例如,分配给一个变量,用作函数的参数或者从该块返回),那么Ruby可以理解地认为没有必要首先使用该语句并提醒您这一点。
为了测试这一点,你可以用-w标志推出IRB并添加以下代码:
> irb -w
def example
1 == 1
:hello
end
的1 == 1应该发出关于无效的情况下无用的==警告。尝试它没有:你好行,你不会得到警告,因为1 == 1
将被用作返回语句。
我知道欧普和其他人在这里已经明白这一点。不过,我想将此发布给像我这样的人,他们可能想知道为什么会发出警告,以及为什么提出的解决方案解决了这个问题。
这应该是上下文的接受答案。 – expressions 2016-12-27 23:32:31