PHPUnit Kullanımı ile PHP'de Mock Testleri Yapmak, yazılım geliştirme sürecinde oldukça önemli bir adımdır Bu makalede, Mock testlerinin ne olduğunu ve nasıl kullanılacağını öğreneceksiniz PHPUnit ile Mock testleri yaparak kodunuzun kalitesini artırın!

PHPUnit, PHP kodlama dili için unit testleri yazmak için kullanılan bir test çerçevesidir. Bu araç, PHP kodunuzun kalitesini artırmak ve uygulamanızın güvenilirliğini sağlamak için gereklidir. PHPUnit ile, kodlarınızı test etmek için bir dizi test yazabilirsiniz. Bu testleri kodunuza uygulamadan önce yaparak uygulamanızın hatalarından kurtulabilirsiniz.
PHPUnit, yazılım test sürecinizi otomatik hale getirir. Bu sayede test sürecini daha hızlı ve daha kolay hale getirir. Aynı zamanda, PHPUnit kodunuzu test etmenizi sağlayan birçok araç sunar. Bu araçlar sayesinde kodunuzu hata bulmaya ve düzeltmeye yardımcı olur.
PHPUnit ile kodunuzun kalitesini artırabilirsiniz. Güvenilir uygulamalar oluşturmak için testler oluşturmanız gerektiğini unutmayın. Bu testler ile, uygulamanızın doğru çalıştığından ve istenen sonuçların elde edildiğinden emin olabilirsiniz.
Mock Testleri Nedir?
Mock testleri, birim testlerinde kullanılan bir test tipidir. Bu testler, uygulama kodunuzun doğru şekilde çalıştığından emin olmanızı sağlar. Test edilen sınıfın bir parçası olan ancak henüz uygulanmaya hazır olmayan çağrıları taklit ederler. Bu sayede, uygulamanızın gerçek ortamlardaki davranışını kontrol etmek ve hatayı önlemek için kullanılırlar.
Mock testleri, özellikle testlerin hızlı ve kolay bir şekilde gerçekleştirilmesini sağlayan PHPUnit aracı ile birleştirilerek daha etkili bir test süreci oluşturulabilir. Bu sayede, uygulamanızın daha az hata yapması ve daha yüksek bir kaliteye sahip olması için önemli bir adım atılmış olur.
PHPUnit ile Mock Testleri Nasıl Yazılır?
PHPUnit, mock testleri yazım sürecini oldukça kolaylaştırır. Bu araç, test ettiğiniz sınıfların işlevlerine sahip yanlış bir nesne oluşturmanızı sağlar. Bunun için PHPUnit'in MockBuilder sınıfını kullanabilirsiniz.
MockBuilder sınıfı, iki yönteme sahiptir: **getMock** ve **setMethods**. **getMock** yöntemi, test edilen sınıfın işlevlerine sahip yanlış bir nesne oluşturur. **setMethods** yöntemi ise, mock nesnesinin yöntemlerini ayarlar.
PHPUnit ayrıca, mock testlerinin doğrulanmasını da sağlar. Bunun için assert işlevleri kullanılabilir. Bu işlevler, test değerlerinin karşılaştırılmasına olanak sağlar ve doğru sonuçların elde edilmesini sağlar.
Bu şekilde, mock testlerinin yazılması oldukça kolaydır ve PHPUnit, mock testlerinin oluşturulmasını, kontrol edilmesini ve doğrulanmasını daha basit hale getirir.
- Mock Nesnesi Oluşturma
- Mock Nesnesine Beklenen Değerlerin Tanımlanması
- Mock Nesnesinin Kullanılması ve Sonucun Doğrulanması
Mock Oluşturma
PHPUnit, PHP kodunuzun kalitesini artırmak ve güvenilirliğini sağlamak için unit testleri yazmak için kullanılan bir test çerçevesidir. Mock testleri de birim testlerinde kullanılan bir test tipidir ve test edilen sınıfın belirli bir parçasının taklit edilmesine izin verir. Bu şekilde, kullanılacak işlevlerin doğru şekilde çalıştığından emin olabilirsiniz. PHPUnit, mock testleri yazarken kullanıcıların işlerini kolaylaştıran birkaç özellik sunar.
Mock'ları oluşturmak için PHPUnit'in MockBuilder sınıfını kullanmak oldukça kolaydır. Bir nesne, test ettiğiniz sınıfın işlevlerinin taklit edilmesiyle oluşturulur. Bu nesnenin belirli özelliklere sahip olduğundan emin olmak için MockBuilder sınıfı kullanılır. MockBuilder sınıfı, sınıf adını prettify etmek ve bir mock nesnesi oluşturmak için birkaç seçenek sunar.
Örneğin, aşağıdaki kod parçası, "SinifAdi" ile belirtilen sınıfın yanlış bir nesnesini oluşturacaktır:
$mock = $this->getMockBuilder('SinifAdi')->getMock();
Bu mock nesnesi, beklenen değerleri almaz, ancak test ettiğiniz sınıfın işlevlerine sahip olduğu için kullanılabilir. Bu şekilde, kodunuzun başka bölümlerine etkisi olmadan testler yapabilirsiniz.
Mock Testlerinin Doğrulanması
PHPUnit, mock testlerinin doğrulanması için assert işlevlerini kullanır. Mock testi, test edilen sınıfın işlevselliğini simüle etmek için sınıfın özelliklerini taklit eder. Birim testlerinin başarıyla sonuçlanması için beklenen sonuçların doğrulanması gerekir. PHPUnit, beklenen sonuçlarınızın doğru olduğundan emin olmak için bir dizi assert işlevi sunar.
Bu işlevler, test değerlerinin karşılaştırılmasına izin vererek doğru sonuçların elde edilmesini sağlar. Örneğin, assertEquals() işlevi, beklenen sonuçlarla gerçek sonuçlar arasında bir karşılaştırma yapar ve eşit olması durumunda testin başarılı olduğunu gösterir. Ayrıca, assertGreaterThan(), assertLessThan() gibi diğer işlevler de kullanılabilir.
Mimari değişiklikler veya değişen ihtiyaçlar nedeniyle mock testlerinin doğrulama ihtiyacı da ortaya çıkabilir. Bu durumlarda, assert işlevleri kullanarak test sonuçlarını kontrol etmek hızlı ve kolay bir çözümdür.
PHPUnit ile Mock Testleri Uygulama
PHPUnit, PHP kodunuzun kalitesini artırmak ve güvenilirliğini sağlamak için kullanılan bir test çerçevesidir. Bu araç, birim testleri yazmak ve mock testleri oluşturmak gibi işlevleri yerine getirebilir. Mock testlerinin uygulanması, PHPUnit'in assert işlevleri kullanarak test sonuçlarını doğrulamayı içeren birkaç adımdan oluşur.
Adım 1: İlk olarak, mock nesnesi oluşturulmalıdır. Bunun için, test edeceğiniz sınıfın MockBuilder sınıfını kullanabilirsiniz. Bu sınıf, test ettiğiniz sınıfın işlevlerini yerine getirebilecek yanlış bir nesne oluşturacaktır.
Kod: | $mock = $this->getMockBuilder('SinifAdi')->getMock(); |
---|
Adım 2: Mock nesnesine beklenen değerleri tanımlamak için, expects() yöntemi kullanılmalıdır. Bu yöntem, test edilen sınıfın bir metodunu taklit edecek ve beklenen sonuçları belirleyecektir. Bunun için, once() yöntemi, mock nesnesinin yönteminin bir kez çağrılmasını beklediğini belirtir. Method() yöntemi, hangi yöntemin taklit edileceğini ve with() yöntemi hangi parametrelerin beklenildiğini belirler. Son olarak, will() yöntemi, geri dönüş değerlerini belirtir.
Kod: | $mock->expects($this->once()) ->method('ornekMetod') ->with($this->equalTo($beklenenDeger)) ->will($this->returnValue($donusDegeri)); |
---|
Adım 3: Mock nesnesinin kullanılması ve sonucun doğrulanması için, uygulamanızın test edilen sınıfının mock nesnesinin metoduna çağrı yapması gerekir. Sonrasında assertEqual() işlevi, geri dönen değeri ve beklenen değeri karşılaştırarak testin doğruluğunu belirleyecektir. Eğer sonuçlar uyuşmuyorsa, test başarısız olarak sonuçlanacaktır.
Kod: | $result = $mock->ornekMetod(); $this->assertEquals($donusDegeri, $result); |
---|
Adım 1: Mock Nesnesini Oluşturma
Bir mock nesnesi oluşturmak için yapmanız gereken ilk adım, PHPUnit'in MockBuilder sınıfını kullanmaktır. Bu sınıf, test ettiğiniz sınıfın işlevlerine sahip yanlış bir nesne oluşturur. Adım 1'de gerçekleştirilecek işlem, bu yanlış nesnenin oluşturulmasıdır.
Bu adım için kod şu şekildedir:
Kod: | = $mock = $this->getMockBuilder('SinifAdi')->getMock(); |
---|
Bu satır, SinifAdi sınıfı için bir mock nesnesi oluşturur. Oluşturulan nesne, test ettiğiniz sınıfın işlevlerini simüle eder. Bu nesne, sınıfınızın işlevlerini çağırdığınızda yanıt olarak veri döndürebilir veya hata mesajları oluşturabilir. Bu, testlerinizi gerçek verileri kullanarak yapmak yerine, verilerin yanıt verme durumlarını simüle etmek için kullanabileceğiniz anlamına gelir.
Adım 2: Mock Nesnesine Beklenen Değerlerin Tanımlanması
Mock testleri oluşturmak için gerekli olan ikinci adım, mock nesnesine beklenen değerlerin tanımlanmasıdır. Bu adımda, mock nesnesinin bir işlevine çağrıldığında beklenen parametreleri ve geri dönüş değerini belirleyeceksiniz. Bu, mock nesnesinin yalnızca öngörülen girdilerle çalıştığından emin olmanıza olanak tanır.
Bu adımı gerçekleştirmek için PHPUnit'in expects işlevini kullanmalısınız. Bu işlev, mock nesnesinin belirli bir yönteminin bir kez çağrılması gerektiğini belirtir ve bunun, beklenen parametre değerleri ve geri dönüş değeriyle gerçekleşeceğini belirtir.
Kod Parçası | Açıklama |
---|---|
$mock->expects($this->once()) | Beklenen parametrelerin ve geri dönüş değerlerinin tanımlandığı mock nesnesi |
->method('örnekMetod') | Mock nesnesinin çağrılacak yöntemi |
->with($this->equalTo($beklenenDeger)) | Yöntem çağrısı sırasında beklenen parametre değeri |
->will($this->returnValue($donusDegeri)); | Yöntemin geri dönüş değeri |
Bu işlemin sonunda, mock nesnesinin belirli bir işleve çağrılması beklenir. Bu yönteme belirtilen parametrelerle çağrılır ve geri dönüş değeri beklenen değerle eşleşir. Bu işlem, PHPUnit'in assert işlevlerini kullanarak sonuçların doğrulanmasıyla tamamlanır.
->method('ornekMetod')Mock testlerinde, oluşturulan mock nesnesinin kullanımı ve sonucunun doğrulanması işlemi yapılır. Bu adım, test sürecinin en önemli kısmıdır. Oluşturulan mock nesnesi, test edilen sınıfın çağrılarını taklit eder ve sonuçları döndürür. Bu sayede, uygulama kodunuzun doğru şekilde çalışıp çalışmadığını kontrol edebilirsiniz.
Oluşturulan mock nesnesinin kullanımı için, öncelikle çağrı yapılacak olan metodun belirlenmesi gerekir. Bunun için '->method('ornekMetod')' kullanılır. Daha sonra, bu metodun beklenen değerleri tanımlanır ve olması gereken sonuçlar belirlenir. Böylece, metod mock nesnesi üzerinde çağrıldığında beklenen sonuçlar elde edilir.
Mock nesnesinin kullanımı tamamlandıktan sonra, sonuçların doğrulanması işlemi yapılır. Bu, 'assertEquals' işlevi kullanılarak gerçekleştirilir. Bu işlev, fonksiyonun geri döndürdüğü değerin, beklenen değerle aynı olup olmadığını kontrol eder. Doğru sonuçlar elde edildiğinde, test başarılı olarak sonuçlanır.
->with($this->equalTo($beklenenDeger))Bir sonraki adım, mock nesnesine beklenen değerleri tanımlamaktır. Bu, orijinal sınıfın işlevleri için çağrılar yaparken bu işlevlerin ne tür argümanlar alacağını belirlemenizi sağlar. Bu özellik, mock testlerinin doğruluğunu sağlamak için önemlidir.
PHPUnit'deki expects()
işlevi, hangi işlevin test edileceğini belirlemek için kullanılır. Ardından, hangi değerlerin geçirileceğini belirlemek ve mock nesnesinin bu değerleri kabul edeceğinden emin olmak için with()
işlevi kullanılır.
Beklenen değerler sadece sayısal veya dize türüne sahip değilse, equalTo()
işlevi kullanılarak belirtilen türler arasında karşılaştırabilirsiniz. Bu, mock testlerin daha doğru ve gerçekçi sonuçlar vermesine yardımcı olur.
Ayrıca, mock nesnesinin işlevi ne döndüreceğine karar vermek için will()
işlevi kullanılır. Bu yöntem, mock nesnesinden çağrının geri dönüş değerini belirler.
PHPUnit İşlevi | Açıklama |
---|---|
expects() | Bir işlevin test edileceğini belirler. |
with() | Geçirilen değerlerin belirlendiği işlevdir. |
equalTo() | Geçirilen değerlerin işlev tanımıyla eşit olduğunu belirler. |
will() | Mock nesnesinin dönüş değerlerini belirler. |
Mock nesnesine beklenen değerlerin tanımlandığı adımdır. Bu adımda, mock nesnesinin kullanacağı metod belirlenir ve metodun hangi parametrelerle çalışacağına karar verilir. Bu sayede mock nesnesinin doğru sonuçları verip vermediği test edilir.
Bu adımda ayrıca, ->will($this->returnValue($donusDegeri)) kod satırı ile de mock nesnesinin döndürmesi gereken değer belirlenir. Bu sayede, test sonuçları doğru bir şekilde karşılaştırılır ve beklenen sonuçlar elde edilir.
Aşağıdaki örnek kodda, $beklenenDeger ve $donusDegeri değişkenleri tanımlanır ve bu değişkenlere göre mock nesnesinin metodunun çalışma şekli belirlenir.
Kod: | $mock->expects($this->once()) |
---|---|
.method('ornekMetod') | |
.with($this->equalTo($beknenDeger)) | |
.will($this->returnValue($donusDegeri)); |
Bu kod, mock nesnesinin "ornekMetod" metodunu yalnızca bir kez çağıracağını ve bu metodun $beklenenDeger parametresini aldığını belirtir. Ardından, metodların çalışması sonucu $donusDegeri değerini döndürmesi beklenir. Bu şekilde mock testler, programınızın doğru bir şekilde çalıştığından emin olmanızı sağlar.
Adım 3: Mock Nesnesinin Kullanılması ve Sonucun Doğrulanması
Mock nesnesi oluşturulduktan ve beklenen değerler tanımlandıktan sonra, artık mock nesnesinin kullanılması ve sonucun doğrulanması aşamasına geçebilirsiniz. Bu adım, oluşturduğunuz mock nesnesinin kendisinde yer alan metodların çağrılması işlemidir.
Bu adımda, mock nesnesinde yer alan bir metod olan "ornekMetod()" çağrılır ve sonucu "result" değişkeninde saklanır. Sonrasında, assert işlevleri kullanılarak, beklenen dönüş değeri ile gerçek dönüş değerinin eşit olup olmadığı kontrol edilir.
Bu işlem, test edilen sınıfın belirli bir metodunun, beklenen değerler doğrultusunda doğru çalışması durumunda başarılı olarak sonuçlanır. Aksi takdirde, testin başarısız olduğu sonucu elde edilir.
$this->assertEquals($donusDegeri, $result);Bu adım, oluşturduğunuz mock testinin sonuçlarını doğrulamanızı sağlar. Bu adımda, beklendiği gibi bir sonuç elde edip etmediğinizi kontrol edersiniz. Bu kontrol, PHPUnit'in assert işlevleri kullanılarak yapılır.
Bu örnekte, $donusDegeri ve $result değerleri karşılaştırılır ve doğru sonuçların elde edilmesi sağlanır:
Açıklama | Kod |
---|---|
$donusDegeri ve $result değerlerinin karşılaştırılması | $this->assertEquals($donusDegeri, $result); |
Bu adımın sonunda, oluşturduğunuz mock testinin doğru çalıştığından emin olursunuz. Bu, test ettiklerinizin beklediğiniz sonuçları verdiğinden emin olmanızı sağlar.
Sonuç
PHPUnit ile PHP'de mock testleri yazmak, kodun güvenilirliği ve kalitesini artırmak için özellikle önemlidir. Bu işlem, test edilen sınıfın henüz hazır olmayan çağrılarını taklit ederek uygulama kodunun düzgün çalıştığını belirlemek için kullanılır.
PHPUnit, mock testleri oluşturmanın yanı sıra, kontrol etme ve doğrulama süreçlerini de kolaylaştırır. Bunun için assert işlevleri kullanılır ve test sonuçları doğrulanır. Ayrıca, MockBuilder sınıfından yararlanarak yanlış nesneler oluşturulur ve test sırasında beklenen değerler tanımlanır.
Bu sayede kodunuzun güvenilirliği için kısa bir adım atabilirsiniz. PHPUnit, PHP'de mock testleri oluşturma, kontrol etme ve doğrulama süreçlerini kolaylaştıran birçok özellik sunar. Böylece, kodunuzun kalitesini artırır ve hata sayısını azaltarak daha verimli bir hale getirirsiniz.