RSpec:“should == …”和“should eql(…)”之间的区别

在RSpec中,使用should == ...should eql(...)之间有什么区别? 我注意到RSpec文档总是使用eql ,但==键入的内容更少,更易于阅读。 我错过了什么?

这很简单,真的: should ====消息发送给测试主题, eql? should eql发送eql? 给测试对象的消息。 换句话说:两个不同的测试发送两个完全不同的消息,它们调用两个完全不同的方法,从而做两个完全不同的事情。 特别是eql?==更严格但比equals?更严格equals?

它们通常是等价的,但并非总是如此:

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