2010-09-05 27 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