Sto usando RSpec e per asserisce comeRSpec qual è la differenza tra essere nullo e be_nil
student.name should be nil
student.name should be_nil
Entrambi sembrano funzionare. c'è una differenza tra l'utilizzo di be nil
e be_nil
???
Sto usando RSpec e per asserisce comeRSpec qual è la differenza tra essere nullo e be_nil
student.name should be nil
student.name should be_nil
Entrambi sembrano funzionare. c'è una differenza tra l'utilizzo di be nil
e be_nil
???
Non c'è differenza in realtà, tranne be nil
ottiene definito al volo, e be_nil
è stato specificamente programmato da RSpec.
quando dici should.be something
, RSpec tenta il seguente
[:==, :<, :<=, :>=, :>, :===].each do |operator|
define_method operator do |operand|
BeComparedTo.new(operand, operator)
end
end
considerando che, quando si tenta should.be_nil
controlla solo
object.nil?
https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/matchers/built_in/be.rb
Penso che non ci siano differenze ma è utilizzato per coerenza con altri metodi come be_true
o be_false
.
Sotto il cofano be
controlli la id
di entrambi gli elementi:
opere con nil
fallisce con true
perché in Ruby non tutto false
né nil
è true
fallisce con false
poiché entrambi nil
e false
partita