在RSpec中,使用should == ...
和should eql(...)
之间的区别是什么?我注意到RSpec文档始终使用eql
,但==
输入较少且更易于阅读。我错过了什么?
答案 0 :(得分:16)
这很简单,实际上:should ==
将==
消息发送给测试主题,should eql
将eql?
消息发送给测试主题。换句话说:两个不同的测试发送两个完全不同的消息,这两个消息调用两个完全不同的方法,从而做两个完全不同的事情。特别是,eql?
比==
更严格,但不如equals?
严格。
答案 1 :(得分:15)
它们通常是等价的,但并非总是如此:
1 == 1.0 # => true
1.eql? 1.0 # => false