Nasıl test edileceğini bilmek istiyorsanız, doğru yerdesiniz. Kodunuzu gerçekten biliyor musunuz, ne yapması gerekiyor? Tarayıcıda test ettiniz mi? Ya ötesi değilseniz, yoksa her şeyi test edemezsiniz ve üretimde mi bozulur?
Bir test kütüphanesi, bir grup yardımcı program geliştiricileri, uygulama bileşenlerinde bireysel testler yazmak için kullanır. Bir testin prensip kısımlarından bazıları şunlardır:
Açıklama:
Testin ne hakkında olduğunu açıklar
Kullanın / Kıyız:
bileşeni test edilebileceği bir ortamda kullanır
Alaycı:
varsayımlarınızı kontrol edebilirsiniz, böylece varsayımlarınızı kontrol edebilirsiniz.
Bu makalenin süresince, kod çıktısınızın sağlamlığını iyileştirmenin yanı sıra, kodunuzun atmamasının yanı sıra, bu değerli bir şekilde başlamanıza yardımcı olmak için reaksiyon test kitaplığından bazı örnekler keşfedeceğim. Üretime girdikten sonra kötü sürprizler kadar.
Daha faydalı kaynaklar ister misiniz? İşte en iyinin yıkığı
Web Tasarım Araçları
etrafında, daha akıllıca çalışmanıza yardımcı olacak. Ya da yeni bir makineye ihtiyacınız olursa, bu yuvarlamayı deneyin.
Programlama için en iyi dizüstü bilgisayarlar
. Ya da yeni bir site inşa ediyorsanız, harika bir ihtiyacınız olabilir
Web Sitesi Oluşturucu
.
01. Reaksiyon Test Kütüphanesi ile Başlayın
Bu demo için Create-React-App kullanacağım çünkü zaten test kütüphanesi ile önceden yapılandırılmış olarak geliyor. GATSBY veya özel bir kurulum kullanıyorsanız, test kitaplığını kullanmaya başlamadan önce çalışmanız gereken bazı yapılandırma olabilir.
Başlamak için yeni bir uygulama oluşturalım. Zaten bir NODE.JS'nin son sürümüne sahipseniz, küresel olarak başka bir şey kurmadan aşağıdaki komutu çalıştırabilirsiniz:
npx create-react-app netmag-javascript-testing
02. Ne test edeceğinize karar verin
Basit bir bileşene sahip olduğumuzu hayal edin, bazı durumlu bir düğme söyle. Böyle bir bileşende test edilmeyen şeyler nelerdir?
●
Bileşenin görünümü:
Bileşenimizi yazdıktan sonra beklenmedik bir şekilde değişmesini istemiyoruz. Bu yüzden nasıl yaptığını yakalamak için bir anlık görüntü testi yazacağız. Ardından, eğer bir şey değişirse, manuel veya görsel bir test olmadan hızlıca göreceğiz. Bu, birçok daha küçük bileşenden oluşan bileşenler için mükemmeldir: (ve nerede) görünüşünün etkilendiğini (ve nerede) hızlıca görebilirsiniz.
●
Şunları veren farklı dallar:
İki veya daha fazla farklı çıktı yapabileceğimiz için, hepsinden birinin değil, hepsini doğru hale getirdiğini test etmemiz gerekiyor. Bu nedenle, bir tıklama olayını simüle etmemiz ve bu kod dalı çalıştırıldıktan sonra telafi etme şekli için başka bir anlık görüntü testi yapmamız gerekiyor.
●
Bu fonksiyonlar beklendiği gibi denir:
Bunun istediğimiz gibi başka bir işlevi çağırmak için yazdığımız kodun yapacağını sağlamak istiyoruz. Ancak bu işlev dış bağımlılık olduğundan, bunu burada test etmek istemiyoruz. Testlerimiz sadece istediğimiz işlevselliği kapsar.
İlk testimizi yazalım. Denilen yeni bir dosya oluştur
Mycomponent.unit.test.js
Bileşenle aynı klasörde. Sonunda test.js ekleyerek, test kütüphanesi tarafından otomatik olarak seçilecektir. Bu dosyanın içeriği aşağıdadır:
İthalat 'tepki' dan tepki
'@ Test-Library / React' dan ithalat {render}
'./mycomponent' dan mycomponent ithalatı
tanımlayın ('MyComponent / & Gt;', () = & gt; {
// testler buraya gidin
})
Dikkatinizi çekmek istediğim ilk şey
tanımlamak()
İki argüman alan işlevi: Birincisi, bir metin dizisi olarak, testinizin ne yapacağını daha iyi tanımlamak için kullanabileceğiniz bir dizedir. Bizim durumumuzda sadece bunu yapması gerektiğini söyledik. Bu, başka biri kodunuza bakarken ya da daha sonraki bir aşamada ne yaptığınızı hatırlamanız gerektiğinde çok faydalıdır. İyi tanımlama ifadeleri yazma, bir kod belgelerinin bir şeklidir ve test yazmak için bir başka iyi nedendir.
İkinci argüman testlerinizdir.
tanımlamak()
İşlev, tüm bu testleri diğerinden sonra çalıştıracaktır.
04. Temizleme işlevini kullanın
Aranan bir yardımcı işlevi tanıtalım
daha önce ()
. Bunu kullanmamız gerekiyor, çünkü her seferinde bir şey yaptığımızda, daha önce bileşende var olduğumuzdan geçtiğimiz sahne olmadan taze bir kopya istiyoruz. Veya bileşeni yeniden oluşturmamız gerekebilir:
daha önce ()
Bunu bizim için mi, temizleme işlevini geçebiliriz.
'@ Testing-Library / React' dan ithalat {render, cleanup}
...
tanımlayın ('Bileşen oluşturmalı', () = & gt; {
daha önce (temizleme)
}
Bu adımda, Bileşenimizi 'Dağı' (ya da render) gidiyoruz.
tanımlayın ('Bileşen oluşturmalı', () = & gt; {
daha önce (temizleme)
BT ('Temel Sahne ile Renders', () = & gt; {
render (& lt; mycomponent / & gt;)
})
}
Bu, bize derlenen bileşenin işlenen tüm özelliklerine erişim sağlar. Bunu bir bırakmak iyi olabilir.
console.log ()
Böylece ne yaptığını daha net görebilirsiniz.
Yaparsanız, buradan yararlanabileceğimiz birkaç faydalı özellik olduğunu göreceksiniz. Bir iddia yapacağım (test edilebilir bir bildirimde bulunuyorum) ve kabı çıkararak test edeceğim. Konteyner ', bileşenle ilişkili olan DOM düğümlerini (HTML'nin tümü) içerir.
Şimdi konteynere erişimimiz var, bunun iddiama göre nasıl işlendiğini nasıl söyleyebilirim? Bir anlık görüntü testi ekleyerek.
Bir fotoğraf gibi bir anlık görüntü düşünün. Bileşenimizin bir anlık görüntüsünü zaman içinde belirli bir noktada alır. Ardından, koda değişiklik yaptığımızda, hala orijinal anlık görüntüyle eşleşip eşleşmeyeceğini görebiliriz. Eğer yaparsa, hiçbir şeyin bileşende değişmediğinden emin olabiliriz. Bununla birlikte, eğer değilse, başka bir bileşenden kaynaklanan bir sorunu ortaya çıkarmış olabiliriz, bir daha önce göremeyeceğimiz bir kişi:
06. Test Özellikleri
Bir bileşenin propları veya özellikleri de anlık görüntülerle test edilebilir. Bileşeninize verdiğiniz farklı sahneleri test etmek size daha fazla kapsama ve güven verecektir. Bir gereksinimin ne zaman yapılacağını asla bilemezsiniz, bileşenin sahne cihazınızın reddedildiği ve son çıktı değişecektir.
Bir nesnedeki özellikleri tanımlar ve daha sonra yayılan operatörü kullanın (üç nokta, ardından nesne adı:
... LightProperties)
Çünkü bu şekilde bu şekilde bir argümanı geçebiliriz. Aynı zamanda izolasyonda hangi özellikleri geçtiğinizi görmek faydalıdır:
Bileşenimizi bir düğme olduğunu hayal edin ve düğme tıkladığında bir şeyin olduğundan emin olmak istiyorsunuz. Uygulamanın durumunu test etmek istediğinizi düşünebilirsiniz; Örneğin, devletin güncellendiğini test etmek için cazip olabilirsiniz. Ancak, bu testlerin nesnesi değil.
Bu, bizi bir test kütüphanesi kullanmak için önemli bir konsepte tanıtır: Devleti veya bileşen çalışmalarımızın yolunu test etmek için burada değiliz. İnsanların bileşeni nasıl kullanacağını ve beklentilerini karşılayacağını test etmek için buradayız.
Öyleyse, devletin güncellenip güncellenmediği önemsizdir; Test etmek istediğimiz şey, o düğme baskının sonucunun ne olduğunu.
UI'yi karanlık moddan ışık moduna değiştiren bir fonksiyonun sonucunu test ettiğimizi hayal edelim. İşte bileşen:
İlk olarak, butonun üzerine bir test kimliği eklemeliyiz, böylece bunu render aşamasında bulabiliriz:
dönüş (
& lt; togglebutton
DATA-TESTID = "MODE-TOGGLE"
lightmode = {MODE}
onclick = {toggglemode}
& gt;
Geçiş modu
& lt; / togglebutton & gt;
Yeni özniteliği eklediğimizi fark ettiniz mi?
Veri tanıklığı
Düğmeye mi? İşte bunu nasıl test edebilirsin. İlk önce, test kitaplığından itibaren yeni bir işlevi, ithalat yapın:
Bu harika: Siteye manuel olarak gitmek zorunda değiliz ve etrafa bakmalıyız, ardından düğmeyi tıklatın ve bir ikinci kez bakın - bu da itiraf edersiniz, muhtemelen bir şeyi unutabilir veya kaçırırsınız! Şimdi, aynı girişe verilen, bileşenimizdeki aynı çıktıyı bekleyebileceğimiz konusunda güvenebiliriz.
Kimlikleri test söz konusu olduğunda, kişisel olarak kullanmayı sevmiyorum
Veri tanıklığı
Dom'da bir şey bulmak için. Sonuçta, testlerin amacı, kullanıcının ne yaptığını ve yaptıklarında olanları test etmektir.
Veri tanıklığı
Bir hile gibi hissediyor - Veri-TestID'ler muhtemelen QA mühendisiniz için kullanışlı olmasına rağmen (kalite güvence mühendislerinin rolünü bkz.).
Bunun yerine kullanabilirdik
getByText ()
ve butonumuzun metninde geç. Bu yöntem çok daha fazla davranış olabilir.
08. Fonksiyonu alay ve casusluk
Bazen bir aramayı bir işlevi test etmemiz gerekebilir, ancak bu işlev testin kapsamı dışındadır. Örneğin, PI değerini belirli sayıda ondalık olarak hesaplayan bir işlev içeren ayrı bir modülüm var.
Bu modülün sonucunun ne olduğunu test etmem gerekmiyor. İşlevimin beklendiği gibi yaptığını test etmem gerekiyor. Bunun neden olduğu hakkında daha fazla bilgi için, lütfen kutu ünitesine ve entegrasyon testlerine bakın. Bu durumda, bu işlevi 'alay edebiliriz':
İşlev
tohavebeencalledtimes ()
Bizi etkinleştiren test kütüphanesindeki birçok yardımcı fonksiyondan biridir.
İşlevlerin çıktısını test etmek için. Bu, testlerimizi yalnızca test etmek istediğimiz modüle sadece kapsamamamıza izin vermemize izin verir, ancak aynı zamanda bu işlevi çağırdığında işlevimizin ne yaptığını veya görebileceğimiz anlamına gelir.
Yazma testleri başlamak için biraz göz korkutucu görünebilir. Umarım bu eğitim size denemek için biraz daha güven vermiştir. Uygulamalarım için testler yazmaya başladığımdan beri, gerçekten geri dönmem: Daha kolay dinlenebilirim, gelecekteki çalışmalarımı kullanacak olanlar için daha iyi bir mirasın geride kaldığımı bilerek.
Unutmayın, karmaşık bir site inşa ediyorsanız, elde etmek istersiniz.
ağ sağlayıcısı
Servis spotu. Ve eğer bu sitenin çok fazla varlık içermesi muhtemel ise, onları güvenilir olarak saklamak
Bulut depolama
çok önemlidir.
Bu içerik başlangıçta ortaya çıktı
net dergisi
. Daha fazla bilgi edinin
Web Tasarım Makaleleri Burada
.
Bir boyun ve omuzların nasıl çizileceğini öğrenirken, insanları önden açıkça görmeye alıştığımız için, işimizdeki hacimleri göstermek zor olabilir. Ancak anatomik olarak ..
Alev boyacı, orijinal resimler, ışık efektleri, geleneksel olmayan tasarımlar veya fantastik arka planlar hızlı ve kolay bir şekilde yaratmanızı sağlayan bağımsız bir boya ve pa..