2010-07-19 13 views
10

In RSpec, qual è la differenza tra l'utilizzo di should == ... e should eql(...)? Ho notato che la documentazione di RSpec utilizza sempre eql, ma == è meno digitante e più facile da leggere. Cosa mi manca?RSpec: differenza tra "dovrebbe == ..." e "dovrebbe eql (...)"

+1

http://batsov.com/articles/2011/11/28/ruby-tip-number-1-demystifying-the-difference-between-equals-equals-and-eql/ – Kris

risposta

16

è piuttosto semplice, in realtà: should == invia il messaggio == alla prova soggetto, should eql invia il messaggio eql? alla prova soggetto. In altre parole: i due test diversi inviano due messaggi completamente diversi che invocano due metodi completamente diversi e quindi fanno due cose completamente diverse. In particolare, eql? è più rigido di == ma meno rigido di equals?.

15

Essi sono di solito equivalenti, ma non sempre:

1 == 1.0 # => true 
1.eql? 1.0 # => false 
+0

touche ... touche. .. –

Problemi correlati