在rspec测试中使用eqeql有什么区别?之间有什么区别:

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/

10-09 05:44