2010-09-05 4 views

risposta

7

È anche possibile utilizzare actual.should be == expected. Dipende semplicemente da ciò che pensi sia più carino!

21

RSpec-2 ha un eq(expected) matcher che funziona proprio come == senza avvisare:

actual.should eq(expected) 
20

Usa:

x.should eq(42) 

Oppure:

x.should be == 42 

O spostare x.should == 42 in modo che sia l'ultima riga all'interno del blocco esso.


Per chi pensa MA PERCHÉ?

Sono un noob completo a Ruby, ma qui è la mia comprensione:

L'avvertimento arriva da Ruby come affermazioni come x.should == 42 o 1 == 1 restituisce alcun valore. Se questo valore di ritorno non viene effettivamente utilizzato (ad esempio, assegnato a una variabile, utilizzato come argomento per una funzione o restituito dal blocco), Ruby non vede in modo comprensibile l'utilizzo dell'istruzione in primo luogo e avvisa l'utente.

Per testare questo si può lanciare IRB con la bandiera -w e aggiungere il seguente codice:

> irb -w 

def example 
    1 == 1 
    :hello 
end 

Il 1 == 1 dovrebbe emettere un avvertimento circa == inutile nel contesto vuoto. Provalo senza: hello line e non riceverai l'avviso come 1 == 1 verrà quindi utilizzato come dichiarazione di ritorno.

So che l'Op e gli altri qui lo hanno già capito. Tuttavia volevo postare questo per persone come me che potrebbero chiedersi perché l'avvertimento è stato lanciato e perché le soluzioni proposte affrontano questo problema.

+1

Questa dovrebbe essere la risposta accettata per il contesto. – expressions