RSpec: различие между “должно == …”, и “должен eql (…)”

В RSpec, каково различие между использованием should == ... и should eql(...)? Я заметил, что документация RSpec всегда использует eql, но == меньше вводит и легче читать. Что я пропускаю?

10
задан nicholaides 19 July 2010 в 21:21
поделиться

2 ответа

На самом деле все довольно просто: should == посылает сообщение == испытуемому, should eql посылает сообщение eql? испытуемому. Другими словами, два разных теста посылают два совершенно разных сообщения, которые вызывают два совершенно разных метода и, таким образом, делают две совершенно разные вещи. В частности, eql? является более строгим, чем ==, но менее строгим, чем equals?.

16
ответ дан 3 December 2019 в 14:52
поделиться

Обычно они эквивалентны, но не всегда:

1 ==   1.0 # => true
1.eql? 1.0 # => false
15
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: