RSpec - Konular

RSpec'in güçlü yönlerinden biri, testler yazmak, testleri temizlemek için birçok yol sağlamasıdır. Testleriniz kısa ve derli toplu olduğunda, testlerin nasıl yazıldığının ayrıntılarına değil, beklenen davranışa odaklanmak daha kolay hale gelir. RSpec Konuları, basit basit testler yazmanıza izin veren başka bir kısayoldur.

Bu kodu düşünün -

class Person 
   attr_reader :first_name, :last_name 
   
   def initialize(first_name, last_name) 
      @first_name = first_name 
      @last_name = last_name 
   end 
end 

describe Person do 
   it 'create a new person with a first and last name' do
      person = Person.new 'John', 'Smith'
      
      expect(person).to have_attributes(first_name: 'John') 
      expect(person).to have_attributes(last_name: 'Smith') 
   end 
end

Aslında olduğu gibi oldukça açık, ancak örnekteki kod miktarını azaltmak için RSpec'in konu özelliğini kullanabiliriz. Bunu, kişi nesnesi örneğini açıklama satırına taşıyarak yapıyoruz.

class Person 
   attr_reader :first_name, :last_name 
   
   def initialize(first_name, last_name) 
      @first_name = first_name 
      @last_name = last_name 
   end 
	
end 

describe Person.new 'John', 'Smith' do 
   it { is_expected.to have_attributes(first_name: 'John') } 
   it { is_expected.to have_attributes(last_name: 'Smith') }
end

Bu kodu çalıştırdığınızda, bu çıktıyı göreceksiniz -

.. 
Finished in 0.003 seconds (files took 0.11201 seconds to load) 
2 examples, 0 failures

İkinci kod örneğinin ne kadar basit olduğuna dikkat edin. Birini aldıkit block ilk örnekte ve yerine iki it blocks daha az kod gerektiren ve aynı derecede net olan.