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..