2010-09-05 73 views

回答

7

您还可以使用actual.should be == expected。这只取决于你认为看起来漂亮的东西!

21

RSpec的-2有一个eq(expected)匹配的作品就像==没有警告:

actual.should eq(expected) 
20

用途:

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将被用作返回语句。

我知道欧普和其他人在这里已经明白这一点。不过,我想将此发布给像我这样的人,他们可能想知道为什么会发出警告,以及为什么提出的解决方案解决了这个问题。

+1

这应该是上下文的接受答案。 – expressions 2016-12-27 23:32:31