В RSpec, какая разница между использованием should == ...
и should eql(...)
? Я заметил, что в документации RSpec всегда используется eql
, но ==
меньше печатает и более легко читается. Что мне не хватает?
RSpec: разница между "should ==..." и "should eql (...)"
Ответ 1
Это довольно просто, действительно: should ==
отправляет сообщение ==
испытуемому, should eql
отправляет сообщение eql?
испытуемому. Другими словами: два разных теста отправляют два совершенно разных сообщения, которые вызывают два совершенно разных метода и, таким образом, делают две совершенно разные вещи. В частности, eql?
более строгий, чем ==
, но менее строгий, чем equals?
.
Ответ 2
Они обычно эквивалентны, но не всегда:
1 == 1.0 # => true
1.eql? 1.0 # => false