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.