我在撰写规范时遇到了麻烦:
Failure/Error: expect(Question.all.count).to eql(0)
expected: 0
got: 0.0
(compared using eql?)
为什么count
会返回一个浮点值,即使它没有,也不会期望为true
?
答案 0 :(得分:2)
我不知道为什么Question.all.count
会返回0.0
,但匹配器正在按预期工作。根据{{3}}:
expect(a).to equal(b) # passes if a.equal?(b)
expect(a).to eql(b) # passes if a.eql?(b)
expect(a).to be == b # passes if a == b
在你的情况下expect(0.0).to eql(0)
调用:
0.0.eql?(0) #=> false
它会返回fase
,因为这就是documentation的工作方式:
仅当
obj
为Float
并且值float
时,才返回true。将其与执行类型转换的Float#eql?
进行对比。
要与a == b
进行比较,请使用:
expect(Question.all.count).to be == 0
或
expect(Question.all.count).to eq(0)