在RSpec的,如果我有警告和有如何避免RSpec中的「無效使用==在void context中」?
x.should == 42
another_line_of_code
然後我得到一個警告約
warning: useless use of == in void context
有什麼我可以做其他的比
- 打開警告關閉
- 更改爲
bitbucket = (x.should == 42)
在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