Bu makalemizde, Jasmine ile birlikte gelen eşleşme fonksiyonlarını inceleyeceğiz. Aslında bunlar, "Matchers" olarak geçiyor ama ben anca "eşleşme fonksiyonları" diye çevirebildim, şimdiden özür dilerim.

Bir önceki makalemizde, "toEqual" eşleşme fonksiyonunu zaten kullanmıştık. Hemen hatırlayalım; "expect" fonksiyonundaki değer ile "toEqual" fonksiyonundaki değerin aynı olması bekleniyor, aynı olmadığı durumda da testimiz başarısız oluyordu.

Jasmine'de benzer şekilde, değişik amaçlar için kullanılabilecek pek çok eşleşme fonksiyonu mevcuttur. Hatta bunlar yeterli gelmediği taktirde, kendimiz de yeni fonksiyonlar yazabiliriz ama bence var olan fonksiyonlar fazlasıyla yeterli. Ama yine de kendin eşleşme fonksiyonu yazma fantezisine girmek istersen, bu adresten gerekli bilgiyi edinebilirsin.


Bizim bu makalede göreceğimiz fonksiyonları sıralamak istersek, aşağıdaki gibi bir listeyi elde edebiliriz.
  • toEqual
  • toBe
  • toMatch
  • toBeDefined
  • toBeUndefined
  • toBeNull
  • toBeTruthy
  • toBeFalsy
  • toContain
  • toBeLessThan
  • toBeGreaterThan
  • toBeCloseTo
  • toThrow

Yukarıdaki fonksiyonlara ek olarak, her birinin başına "not." eki gelitirilerek örneğin"not.toEqual" şeklinde olumsuz eşleşmeler de yapılması mümkündür. Bu şekilde toplam 26 adet eşleşme fonksiyonumuz oluyor. Bu kadarı da yetmiyorsa, otur yaz artık, ne diyeyim.

Şimdi sırasıyla bunların kullanım şekillerini örnekler üzerinden görelim.

Not : İhtiyaca göre bir test fonksiyonu içerisinde birden fazla eşleşme fonksiyonu kullanılabilir. Ancak her bir test fonksiyonunun, tek bir kriteri test etmesi tavsiye edilir. Böylece başarısız olan bir testin neden başarısız olduğunu anlamak çok daha kolay olacaktır.


toEqual : Bu fonksiyon, test edilen değer ile "expect" içerisindeki değerin aynı olup olmadığını kontrol eder.
<![CDATA[
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var result = 3 + 4;

        expect(result).toEqual(7);

        expect(result).not.toEqual(8);

    });

});
toBe : Bu fonksiyon, primitif tipler için toEqual fonksiyonu ile aynı işi görür. Ancak nesneler için, sadece iki nesne aynı referansı gösteriyorsa eşitliği kabul eder. Farklı referanslardaki birbiri ile aynı iki nesneyi aynı kabul etmez.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var obj1 = { Ali: 3 };

        var obj2 = obj1;

        var obj3 = { Ali: 3 };

        expect(obj1).toBe(obj2);

        expect(obj1).not.toBe(obj3);

    });

});
toMatch : Bu fonksiyon, regular expression ile arama yapmayı sağlar. Belirtilen kriterlerde bir içerik bulunamadığı takdirde, test başarısız kabul edilir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var text = "Ali Veli 49 50";

        expect(text).toMatch("[Ve?i]");

        expect(text).not.toMatch("@");

    });

});
toBeDefined : Bu fonksiyon, tanımlanmış ve kendine değer atanmış değişkenler için başarılı, tanımlanmasına rağmen herhangi bir değer atanmamış, yani undefined değerine sahip değişkenler için başarısız sonucunu verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var text1 = "Ali",
            text2;

        expect(text1).toBeDefined();

        expect(text2).not.toBeDefined();

    });

});
toBeUndefined : Bu fonksiyon, "toBeDefined" fonksiyonu ile tam zıt şekilde çalışır.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var text1, text2 = "Ali";

        expect(text1).toBeUndefined();

        expect(text2).not.toBeUndefined();

    });

});
toBeNull : Bu fonksiyon, null değere başarılı, aksi durumda başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var text1 = null,
            text2 = "Ali";

        expect(text1).toBeNull();

        expect(text2).not.toBeNull();

    });

});
toBeTruthy : Bu fonksiyon, true ve türevi değerler için başarılı, tersi durumlar için başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value1 = true,
            value2 = 5;

        expect(value1).toBeTruthy();

        expect(value2 > 7).not.toBeTruthy();

    });

});
toBeFalsy : Bu fonksiyon, false ve türevi değerler için başarılı, tersi durumlar için başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value1 = false,
            value2 = 5;

        expect(value1).toBeFalsy();

        expect(value2 < 7).not.toBeFalsy();

    });

});
toContain : Bu fonksiyon, metinsel bir ifade içerisinde belirtilen metnin bulunması durumunda başarılı, bulunmaması durumunda başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var text = "Ali Veli 49 50";

        expect(text).toContain("Veli");

        expect(text).not.toContain("Ayşe");

    });

});
toBeLessThan : Bu fonksiyon, "expect" içerisindeki değer ikinci değerden küçük ise başarılı, aksi durumda başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value = 5;

        expect(value).toBeLessThan(7);

        expect(value).not.toBeLessThan(5);

    });

});
toBeGreaterThan : Bu fonksiyon, "expect" içerisindeki değer ikinci değerden büyük ise başarılı, aksi durumda başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value = 5;

        expect(value).toBeGreaterThan(3);

        expect(value).not.toBeGreaterThan(5);

    });

});
toBeCloseTo : Bu fonksiyon, "expect" içerisindeki değer ile ikinci değer arasındaki fark 0.005 veya daha azsa başarılı, değilse başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value1 = 5.995,
            value2 = 5.994;

        expect(value1).toBeCloseTo(6);

        expect(value2).not.toBeCloseTo(6);

    });

});
toThrow : Bu fonksiyon, çağırılan fonksiyon bir hata fırlatırsa başarılı, fırlatmazsa başarısız sonuç verir.
"use strict";

describe("Musterinin istedigi program", function () {

    it("cok dogru calismali", function () {

        var value = 5;

        expect(function () { 1 / valuex }).toThrow();

        expect(function () { 1 / value }).not.toThrow();

    });

});


Yorum Gönder

 
Top