我正在使用rspec和类似
的断言student.name should be nil
student.name should be_nil
两者似乎都有效。使用be nil
和be_nil
???
答案 0 :(得分:16)
除了be nil
动态定义,be_nil
已由rspec专门编程外,没有任何区别。
当你说should.be something
时,rspec会尝试以下
[:==, :<, :<=, :>=, :>, :===].each do |operator|
define_method operator do |operand|
BeComparedTo.new(operand, operator)
end
end
然而,当您尝试should.be_nil
时,它只会检查
object.nil?
https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/matchers/built_in/be.rb
答案 1 :(得分:3)
我认为没有区别,但它用于与be_true
或be_false
等其他方法保持一致。
引擎盖be
检查两个元素的id
:
适用于nil
因true
而失败,因为在Ruby中,false
和nil
的所有内容都不是true
false
和nil
匹配,与false
失败