2010-07-19 12 views
10

En RSpec, ¿cuál es la diferencia entre usar should == ... y should eql(...)? Noté que la documentación de RSpec siempre usa eql, pero == es menos tipada y más fácil de leer. ¿Qué me estoy perdiendo?RSpec: diferencia entre "should == ..." y "should eql (...)"

+1

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

Respuesta

16

Es bastante simple, realmente: should ==== envía el mensaje a la persona de prueba, should eql envía el mensaje eql? al sujeto de prueba. En otras palabras: las dos pruebas diferentes envían dos mensajes completamente diferentes que invocan dos métodos completamente diferentes y, por lo tanto, hacen dos cosas completamente diferentes. En particular, eql? es más estricto que == pero menos estricto que equals?.

15

Por lo general son equivalentes, pero no siempre:

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

touche ... touche. .. –

Cuestiones relacionadas