Laravel Elequent modelleri laravelin en güçlü taraflarından birisi. Modelleri birbirleri ile ilişkilendirerek çok rahat veri yapılarını oluşturabiliyorsunuz.
Laravele eklenen ilişkiler için unit test yazmanız gerekse bunu şöyle yapabilirsiniz.
Bu örnek modelimiz olsun. İnvestor ilişkisine birim testi yazmak isteyelim.
Unit testlerde en önemli özellik test edeceğiniz birimi mümkün olan herşeyden yalıtmak. Bunu da yapmanın kolay yolu mock'ları kullanmak.
Mock bir objenin test edilmeye uygun kopyasının oluşturulmasıdır.
İlişkiyi test etmek istediğinizde en büyük zorluk Elequent'in db'ye bağlanmak istemesidir. Bir diğer zorluk da belongsTo methodunun modelimizin extends olduğu Model objesinden gelmesidir.
DB'ye bağlanmadan bir işlev yapabilmesi için belongsTo methodu için mock oluşturmak gerekmektedir.
Fakat Test edeceğiniz class'ın tamamını mock oluşturursanız test edeceğiniz methodda mocklanacaktır. Bizim örneğimizde investor methodu. Bunun için Mock oluştururken makePartial() methodunu belirtmeniz gerekir. makePartial methodu test edeceğiniz classtan obje oluştururken var olan methodlarına dokunmaz sizin test için eklediğiniz methodları oluşturu. Bizim test için eklediğimiz method ise belongsTo methodu. Mock oluştururken methodumuzun ne parametre alacağını ve geriye ne döneceğinide belirleriz.
Methodu çalıştırdıktan sonra geriye dönen değer ile oluşturduğumuz değeri karşılaştırdığımızda investor methodunun içindeki kodları test etmiş oluruz.
Bu test bize ne sağlar. Yeni özellikler eklerken bu methodda yapılacak değişiklikler var olan kodların çalışmasını bozacağını farkederiz. Bozulan yerleri tesbit edip, test kodunu yeni durum için yazıp diğer bozulan alanlarında testi olacağını var sayarsak onlarıda tek tek düzeltmemiz gerekir.
Yorumlar
Yorum Gönder