PHPUnit Nedir?

Unit testlerinin temelinde, test edilecek olan işlev içerisinde kullanılan olası test durumları (testcase) manual ya da hazır(otomatik) olmak üzere iki farklı şekilde yazılabilmektedir. Çoğunlukla var olan/hazır unit test frameworkleri aracılığı ile erişilenleri tercih edilmekle birlikte, manual olarak da projeye dahil edilebilmeleri elbette mümkündür.

Bazı unit test araçları şöyle sıralanabilir:

 

Bunlar içerisinden bu yazımızda php geliştiricileri için oluşturulan PHPUnit den bahsedilecektir.

PHPUnit içerisinde işlevlerin kontrol edilmesini sağlayan bazı iddialar (assertions) ile birlikte gelir. Bu iddialar, genel olarak iki parametre alarak ilerler. Bunlardan ilki beklenen değer ve ikincisi ise şu an var olan değeri ifade etmektedir.

Örneğin, aşağıdaki örnek kod bloğuna bakacak olursak, $team değişkeni ile başlayan ilk satırda bir takım oluşturulmuş ve ayrıca bu takıma ikinci ve üçüncü satırlarda $user ve $userTwo olmak üzere iki tane kullanıcı oluşturulmuştur.

Oluşturulan kullanıcılar dört ve beşinci satırlarda takıma eklenmiştir (burada yer alan add() metodu önceden tanımlanmıştır).

Son olarak da takımdaki kullanıcı sayısının, beklenen değer ile aynı olup olmadığını kontrol etmek için assertEquals kullanılmıştır. İlk değer olan 2 beklenen değer ve ikinci değer ise projede $team değişkeni için dönen sayıdan gelecek ve aynı olup olmadığı karşılaştırılacaktır.  

/** @test */
    public function team_can_add_a_members(){

        $team = factory(Team::class)->create();

        $user = factory(User::class)->create();
        $userTwo = factory(User::class)->create();

        $team->add($user);
        $team->add($userTwo);

        $this->assertEquals(2, $team->count());
    }

Başka bir assertion içeren benzer bir kod bloğu aşağıda verilmiştir. Verilen kod bloğunda, ilk kısımda (given part) 2 makale oluşturulmuştur. 

Oluşturulan makaleler için ‘reads’ yani okunma bileşenine 10 değeri tanımlanmıştır. Ayrıca $mostPopular değişkeni içerisine de aynı okunma sayısının 20 olduğu başka bir makale tanımlanmıştır. 

(when part) Ayrı bir dosyada tanımlanan, aralarındaki skorun yüksek olanı belirleyen trending() methodu kullanılmış ve makaleler arasında en yüksek ‘reads’ oranı belirlenmiştir. (then part) Son olarak da makaleler arasından ilk sıradaki makaleye ait id’nin, en yüksek okunma sayısının olduğu $mostPopular değişkenine ait id ile eşit olup olmadığı assertEquals ile kontrol edilmiştir. Burada “assertCount()” ise 3 tane makale olup olmadığının kontrol edilmesini sağlamaktadır. 

/** @test */
function fetching_trending_articles (){

    //given part
    factory(Article::class, 2)->create();

    factory(Article::class)->create(['reads' => 10]);
    $mostPopular=factory(Article::class)->create(['reads' => 20]);

    //when part
    $articles = Article::trending();

    //then part
    $this->assertEquals($mostPopular->id, $articles->first()->id);

    $this->assertCount(3, $articles);

}

Son olarak aşağıda yer alan diğer bir assertion ise “assertTrue()” gelen değerin doğru olup olmadığını kontrol etmek için kullanılmaktadır. 

/** @test */
public function AssertsionsTest()
    {
       $this->assertTrue(true);
    }

Daha fazla için PHPUnit dokümantasyonundan bilgi edinebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.