2 min read

RSpec ile Test Odaklı Kod Geliştirme - I

Ruby gelişticilerinin bir çoğunun kabul ettiği, hatta ruby paket yöneticisi olan gemlerde kullanılan bir test mekanizması olan  RSpec kullanımını elimden geldiğince bu yazı dizisinde anlatmaya çalışacağım.

RSpec Nedir?

Ruby dili ile yazılmış, ruby kodlarınızın testlerinde kullanılan bir test çatısıdır. Bu çatı bir çok geliştirici tarafından kabul görür. Ancak ruby var sayılan olarak Unit Test destekler.

RSpec ile ilk test kodlarımızı yazmaya başlayalım. Bunun için öncelikle rspec kurmalıyız.

gem install rspec
mkdir rspec
cd rspec

“rspec” adında bir klasör oluşturduk. Bu klasörde de yazacağımız klasör olan “src” ve testlerimizi yazacağımız “test” klasörlerini oluşturuyoruz.

mkdir src test

Testlerimizi yapacağımız basit bir kitaplık sınıfımızın olduğunu düşünelim. Bu sınıf ile bir json dosyasından kayıtlı kitapları çekip ekranda gösteriyoruz. Buna göre test kodlarımızı hazırlamaya başlayalım.

require 'rspec'

describe 'Kitap' do
  it 'Kitapları getir' do

  end
end

describe ile oluşturacağımız testi tanımlıyoruz. Burada istediğiniz bir tanım girebilirsiniz elbette, fakat oluşturulan testler ne kadar kodlarınız ile ilişkili isimler içerirse o kadar iyi olacaktır.

“Kitap” adında bir sınıfım olacağı için, describe olarak ‘Kitap’ değerini verdim. it ise oluşturulan testin tanımını kapsar. Böylelikle hangi testin ne gibi bir sonuç vermesi gerektiğini kolaylıkla ayırt edebiliriz.

Oluşturulan test dosyasını çalıştırdığımızda aşağıdaki gibi bir sonuç dönmesi beklenmektedir.

$ rspec kitap_spec.rb 
.

Finished in 0.00036 seconds (files took 0.09032 seconds to load)
1 example, 0 failures

Ekran çıktısında olduğu gibi bir adet örneğimiz mevcut ve 0 hata almışız. İlk testimiz başarılı bir şekilde çalıştı 🙂

‘Kitapları getir’ görevini aşağıdaki gibi düzenleyip yeniden çalıştıralım. Bu düzenleme ile kodumuz exception vereceği için testimizden geçmemesini beklemekteyiz.

it 'Kitapları getir' do
    raise('Error')
end

Konsol çıktımız;

$ rspec kitap_spec.rb 
F

Failures:

  1) Kitap Kitapları getir
     Failure/Error: raise('Error')
     RuntimeError:
       Error
     # ./kitap_spec.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.00037 seconds (files took 0.08916 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./kitap_spec.rb:4 # Kitap Kitapları getir

Görüldüğü gibi hata aldığımız testin tanımı ve görevi konsol çıktımızda yer alıyor.

Bu yazımızda RSpec kurulumu ve basit bir test kodu oluşturduk. Diğer yazımızda testimizi daha detaylı olarak ilerleteceğiz. İyi kodlamalar..