Açısal - Birim Testinde Yasemin Özel Eşleştiricileri Ekleme

Hem Javascript hem de Typescript'te

Fotoğraf Unsealash'taki Hosea Georgeson

Jasmine, birim testi için birçok yerleşik eşleştirici sağlayan bir BDD çerçevesidir. Ancak, bazen tüm test senaryolarını kolaylaştırmak veya daha okunabilir test durumları oluşturmak için kendi özel eşleştiricilerimizi oluşturmamız gerekir.

Bu yazıda, yasemin eşleştiricilerini ve bunların hem Javascript hem de Typescript'te kullanımlarını inceleyeceğiz.

  • Eşleştiriciler nedir?
  • Yerleşik Eşleştiriciler ve Bunların Kullanımı
  • Özel Matematikçiler ve Nasıl Tanımlanır?
  • Javascript'te Örnek Proje
  • Typescript'te Örnek Proje
  • Özel Eşleştiriciler Açısal olarak nasıl tanımlanır
  • özet

Eşleştirici nedir

Eşleştiriciler, test özelliklerinde beklenen ve gerçek sonuçları fiilen karşılaştıran işlevleri karşılaştırmadan başka bir şey değildir.

İşte Eşleştiricilerden birine bir örnek. 4 numaralı satıra bakarsak, toBe eşleştiricidir ve daima beklediğiniz şekilde kullanılır. Sadece gerçek sonucu beklenen sonuç ile karşılaştırır ve bir boole değeri döndürür.

Yerleşik Eşleştiriciler ve Bunların Kullanımı

Jasmine pek çok yerleşik kibritçi sağlar ve bazılarını burada görelim.

VSCode tarafından eşleşen önerileri

İşte onları nasıl kullanmamız gerektiği.

Özel Matematikçiler ve Nasıl Tanımlanır?

Çoğu zaman yasemin bu yerleşik kibritçiler yeterli. Ancak bazen özel eşleştiricilerimizi oluşturmamız gerekir.

Jasmine, addMatchers adlı bir işlev sunar, böylece eşleştiricileri özel veya kullanıcı tanımlı işlevlerimizle genişletebiliriz. Bunu, Önceİşlev fonksiyonuna koymalıyız.

Özel eşleştiriciyi burada nasıl tanımladığımızı görelim. Aşağıda görebileceğimiz gibi, sonuç fonksiyonu ile pass işlevini ve mesajını içeren karşılaştırma işlevini döndüren BeOlderThan öğesini tanımlıyoruz. Test başarısız olursa, verdiğimiz mesaj ne olursa olsun konsolda gösterilecektir.

Javascript'te Örnek Proje

Bu yazı için takip etmek için kullanabileceğiniz bir repo yazdım. Kullanmak için yukarıdaki bağlantıyı tıklayın, kopyalayın ve kurun.

// repoyu klonla
git klonu https://github.com/bbachi/jasmine-tests.git
// bağımlılıkları kurun ve test edin
npm kurulum
npm testi

GetName, getAge, setName ve setAge yöntemlerine sahip bir kişimiz var

Yukarıdaki sınıfı toBeOlderThan, toBeLastNameEqualTo, toBeFirstNameEqualTo özel eşleştiricileriyle test etmek istiyoruz. Bu özel eşleştiricileri aşağıdaki gibi ayrı bir nesnede tanımlayalım ve bu nesneyi beforeEach işlevine ekleyelim.

İşte yukarıdaki özel eşleştiriciler nesnesini addMatchers nesnesine eklediğimiz ve projeyi test ettiğimiz dosyanın geri kalanı.

İşte npm testini çalıştırdığımızda çıktı.

test çıkışı

Typescript'te Örnek Proje

Bunu takip etmek için kullanabileceğiniz yazı projesi için bir repo yazdım. Kullanmak için yukarıdaki bağlantıyı tıklayın, kopyalayın ve kurun.

// projeyi klonla
git klonu https://github.com/bbachi/jasmine-tests-typescript.git
// bağımlılıkları kurun ve testi çalıştırın
npm kurulum
npm testi

Typescript içinde getName, getAge, setName ve setAge yöntemleriyle bir kişi sınıfımız var

Typescript içinde olduğundan aşağıdaki tip tanımlarını kurmamız gerekiyor

"@ types / jasmine": "^ 3.3.12",
"@ types / node": "^ 12.0.0",
"ts-node": "^ 8.1.0",
"typescript": "^ 3.4.5"

Srkt / test-helpers altındaki ayrı bir dosyada typescript'teki özel yöntemler:

Bu özel eşleştiriciler için tür tanımları tanımlamalıyız çünkü bunlar genişletilmiş ve yasemin türü tanım dosyasında ve yazı dizisi derleyicisinin tanıması için mevcut değildir.

Bunları, aşağıdaki gibi 4 numaralı satırdan yasemin ad alanı altında ilan edebiliriz.

İşte npm testini çalıştırdığımızda çıktı.

test çıkışı

Özel Eşleştiriciler Açısal olarak nasıl tanımlanır

Açısal olarak, özel makinaları aynı şekilde tanımlarız. Tüm özel eşleştiriciler için custom-matcher.ts ve test klasörü altındaki tür tanımları için custom-matcher.d.ts tanımlamamız gerekir.

özel eşleştirici için ayrı klasör

Custom-matcher.ts ve custom-matcher.d.ts dosyalarını aşağıdaki gibi belirli bir dosyaya alın.

Kalan tüm kodları kısalık için aşağıdaki dosyadan kaldırdım.

İşte npm testini çalıştırdığınızda çıktı

test çıkışı

özet

  • Eşleştiriciler, gerçek ve beklenen sonucu karşılaştıran ve bir boole değeri döndüren karşılaştırma işlevleridir.
  • Jasmine, Angular'ın birim testi için kullandığı bir BDD test çerçevesidir.
  • Eşleştiriciler her zaman beklentilerle birlikte kullanılmalıdır.
  • Jasmine, doğrudan projede kullanılabilecek dahili eşleştiriciler sağlar.
  • Yasemin eşleştiricilerini addMatchers () adlı işleviyle genişletebiliriz.
  • Yasemin özel eşleştiriciler hem javascript hem de typescript ile yazılabilir.
  • Derleme için derleyici tanımlayıcıları, özel derleyiciler için derleme dosyaları tanımlamamız gerekiyor.
  • Jasmine.addMatchers () her zaman önce HerE () bloğunda kullanılmalıdır.

kaynaklar

  • Özel eşleştirici Javescript Git repo
  • Özel eşleştirici Typescript Git repo
  • Özel eşleştirici Açısal Git deposu

Okuduğunuz için teşekkür ederiz ve bu yararlı bulursanız, lütfen bir alkış verin ve başkalarının bulmasına yardımcı olun. Lütfen daha ilginç hikayeler için beni takip et :)