在rspec中,你如何比较某些东西的价值而忽略了这种类型?
Failure/Error: expect(variable).to eql model.id
expected: 1234
got: "1234"
(compared using eql?)
我已尝试eq
(使用==
进行比较)和eql
(使用eql?
进行比较)...我还阅读了https://stackoverflow.com/a/32926980/224707
如何让rspec认为这两个值相等?
答案 0 :(得分:8)
不同类的实例不能相等。
您需要转换它们,使它们成为同一个类的实例:
"1234" == 1234
#=> false
"1234".to_i == 1234
#=> true
1234.to_s == "1234"
#=> true
所以在你的例子中:
expect(variable.to_i).to eql model.id
# or less logical :
expect(variable).to eql model.id.to_s
答案 1 :(得分:2)
==
检查实例类型和值是否相同,因此您需要将它们转换为相同
将其更改为一个
expect(variable.to_i).to eql model.id
或
expect(variable).to eql model.id.to_s