在rspec测试中使用eq
和eql
有什么区别?之间有什么区别:
it "adds the correct information to entries" do
# book = AddressBook.new # => Replaced by line 4
book.add_entry('Ada Lovelace', '010.012.1815', '[email protected]')
new_entry = book.entries[0]
expect(new_entry.name).to eq('Ada Lovelace')
expect(new_entry.phone_number).to eq('010.012.1815')
expect(new_entry.email).to eq('[email protected]')
end
和:
it "adds the correct information to entries" do
# book = AddressBook.new # => Replaced by line 4
book.add_entry('Ada Lovelace', '010.012.1815', '[email protected]')
new_entry = book.entries[0]
expect(new_entry.name).to eql('Ada Lovelace')
expect(new_entry.phone_number).to eql('010.012.1815')
expect(new_entry.email).to eql('[email protected]')
end
最佳答案
根据比较中使用的相等类型,此处存在细微差异。
从Rpsec文档:
Ruby exposes several different methods for handling equality:
a.equal?(b) # object identity - a and b refer to the same object
a.eql?(b) # object equivalence - a and b have the same value
a == b # object equivalence - a and b have the same value with type conversions]
eq
使用==
运算符进行比较,而eql
忽略类型转换。关于ruby - Rspec `eq`与 `eql`测试中的 `expect`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32926817/