2015-08-15 99 views
3

我有一個rspec測試,我想確保只有兩個值可以傳遞到我的實例變量。我注意到,should satisfy與塊似乎是測試,其中兩項成果是可以接受的比較認可的方式,但我想實現一個expect().to eq()如下圖所示:Rspec:使用或期望.to eq語句

it "only allows -2 or 2 as values" do 
    expect (@note.value).to eq(2 or -2) 
    end 

是對我的期望rspec的這個正確的語法測試?我理解should聲明背後的想法,我更關心的是爲什麼should更適用於使用expect .to eq的複合期望值(如果實際情況如此)。

謝謝。

+0

感謝。我明白'應該'聲明。不過,我想知道爲什麼對期望「複雜期望」的期望對於「應該」聲明可能是不足的。 – dpg5000

+0

它不是。 RSpec的'expect'語法現在是首選語法。 – sevenseacat

回答

2

another question中所述,您可以換個角度並在expect子句中使用可能的值。隨着new matcher syntax這應該是這樣的:

expect([2, -2]).to include(@note.value) 

我還要提到的是,你通常要避免這種隨意性在你的測試。準確地表達你的期望!

+0

謝謝,請您詳細說明我在測試中看到的隨機性?我只希望兩個值傳遞true,其他所有返回false。 – dpg5000

+0

您應該測試在哪種情況下返回每個具體的值 - 知道某個方法可以返回-2或2是無用的,如果它返回2而不是-2對於某些輸入,反之亦然。 – sevenseacat

+0

這就是隨機性;)通常你會測試一個特定的筆記,你可以確定這個值是2,或者確定這個值是-2。 (expectation(@ first_note.value)。)成爲(2);期望(@ second_note.value)。爲(-2)' – panmari

相關問題