2012-06-01 9 views

Odpowiedz

14

Nie ma żadnej różnicy naprawdę, z wyjątkiem be nil zostanie określona na bieżąco, a be_nil został specjalnie zaprogramowany przez RSpec.

kiedy mówisz should.be something, rspec próbuje następujące

[:==, :<, :<=, :>=, :>, :===].each do |operator| 
     define_method operator do |operand| 
     BeComparedTo.new(operand, operator) 
     end 
    end 

Natomiast przy próbie should.be_nil po prostu sprawdza

object.nil? 

https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/matchers/built_in/be.rb

2

Myślę, że nie ma różnicy, ale jest używana dla spójności z innymi metodami, takimi jak be_true lub be_false.

pod maską be kontroli właściwy id obu elementów:

  • prac z nil

  • nie z true ponieważ w Ruby wszystkiego nie false ani nil jest true

  • nie powiedzie się z false od nil i false mecz

Powiązane problemy