我正在使用 rspec 并用于断言
student.name should be nil
student.name should be_nil
两者似乎都有效。be nil使用be_nil???有区别吗?
我正在使用 rspec 并用于断言
student.name should be nil
student.name should be_nil
两者似乎都有效。be nil使用be_nil???有区别吗?
真的没有什么区别,除了be nil动态定义,并且be_nil由 rspec 专门编程。
当你说should.be somethingrspec 尝试以下
[:==, :<, :<=, :>=, :>, :===].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
我认为没有区别,但它用于与其他方法(如be_trueor )保持一致be_false。
在引擎盖下be检查id两个元素:
与nil
失败,true因为在 Ruby 中,一切都不是,false也不nil是true
失败,false因为两者nil都false匹配