ch07-ModalYesNo

Angular sürümündeki uygulamada, bileşenin çok sayıda css, başlık, bölüm ve sonunda 2 düğme içeren bir altbilgi ile bir modal olacağını görebiliriz. İskelet için, header, section, footer ve footer altındaki iki düğme ile div içeren bir yapıya başlayabiliriz.

ModalYesNo-initial

feat/modalYesNo adlı bir dal oluşturun. src/components/ klasörü altında ModalYesNo.cy.tsx, ModalYesNo.tsx adında 2 dosya oluşturun. Her zamanki gibi, bileşenin render edilmesiyle başlayarak aşağıdakileri dosyalara kopyalayın ve yarn cy:open-ct ile runner'ı açtıktan sonra testi çalıştırın.

// src/components/ModalYesNo.cy.tsx
import ModalYesNo from "./ModalYesNo";

describe("ModalYesNo", () => {
  it("should", () => {
    cy.mount(<ModalYesNo />);
  });
});

İşleri basit tutmak için, React TypeScript Cheatsheet adresinden orijinal tarifi kullanacağız, modal portal örneği. src/components/Modal.tsx oluşturun ve aşağıdaki kodu yapıştırın.

Şimdilik modalın her zaman açık olduğunu varsayacağız ve DOM'da modal-root adlı bir öğe bulunduğunu doğrulayan başarısız bir test yazacağız (Red 1).

Testi geçmek için Modal'ı içe aktarıp render etmeliyiz (Green 1).

Uygulamanın header, section ve footer ile iki düğme içeren bir iskeleti üzerinde karar kıldık. Bunu için başarısız bir test yazalım (Red 2).

Modalın iskeletini oluşturarak testi geçirelim (Green 2).

ModalYesNo-green2

Bu biraz çıplak görünüyor. Angular sürümünden stilleri kopyalayalım ve birkaç etiket daha ekleyelim (Düzenleme 2). Önceki bölüme benzer şekilde, görsel yardımcılarla Düzenleme adımları için RedGreenDüzenleme döngüsü yapabiliriz.

Test çoğunlukla aynı kalır, tek fark stillerin içe aktarılmasıdır.

Görseller gerçek şeye benziyor. Şimdi kalan şey biraz metin ve düğmeler için onClick işleyicileridir.

ModalYesNo-Düzenleme2

Modalda dört metin parçası vardır; başlık, mesaj ve düğmeler. Bu dizeleri kontrol eden başarısız bir test yazalım. Sert kodlanmış değerler kullanacağız ve daha sonra neyin parametreleştirilebileceğine karar vereceğiz (Red 3).

Testi geçmek için sert kodlanmış dizeyi ilgili etiketlere ekleriz (Yeşil 3).

Görsellerle daha iyi bir değerlendirme yapabiliriz ve neyin parametrize edilmesi gerektiğine karar verebiliriz. Onayla, Hayır ve Evet büyük olasılıkla sabit kalır. Mesaj, eğer varsa, bir özellik olarak parametrize edilmelidir. Burada aracın bileşenin yeniden düzenlenmesinde ve tasarımında bize yardımcı olduğu önemlidir.

ModalYesNo-Green4

Testi, mesaj için bir özellik kabul edecek şekilde değiştiririz. Test geçer, ancak TS derleyicisi yeni eklenen özelliğe karşı bizi uyarıyor (Kırmızı 4). Burada TS'nin de RedGreenDüzenleme döngülerinde bize yardımcı olduğu önemlidir.

İyi kurulmuş bir deseni takip ederek, bir özellik türü, bileşene bir argüman ve bileşende değeri kullanarak ekleyin (Yeşil 4).

Evet ve Hayır düğmeleri için tıklama işleyicilerini ekleyelim. Bunların çağrılmasını sağlamak için özellikler geçirmemiz ve kullanmamız gerekecek. Başarısız bir test yazın (Kırmızı 5).

Sonraki döngü için, Hayır düğmesi için aynısını tekrarlayın. Her zaman olduğu gibi, başarısız olan testi önce yazın ve ardından bunu geçmesini sağlayacak kodu yazın (Kırmızı 6, Yeşil 6).

Son düşünülmesi gereken özellik, modalın kullanımıdır. Açık veya kapalı olabilir. Genellikle bu, bir useState kancasıyla ele alınır, ancak bunun kullanımını bir testle çoğaltabiliriz. Boolean koşullu bir render içeren bir ana bileşen eklememiz gereken bir test ekliyoruz. Bu kenar durumunu kontrol etmemize izin veren bir yardımcı işlevle bir test ekliyoruz. Bunu çalıştırmak için yapmamız gereken tek şey, bileşenin en üst div öğesine bir data-cy özelliği eklemektir (Düzenleme 6).

RTL sürümü bileşen testi

Özet

İlk olarak, modal-root'un oluşturulduğunu kontrol eden basit bir testle başladık (Kırmızı 1).

Bir modal tarifi kullandık ve bunu bileşenimize içe aktardık (Yeşil 1).

Bileşenin iskeletine karar verdik ve bunun için bir test yazdık (Kırmızı 2).

Bileşeni stil ekleyerek yeniden düzenledik. Önceki bölümlerde olduğu gibi, yeniden düzenleme artışları için görsel yardımcılar kullandık (Düzenleme 3).

Modalda bulunan 4 metin parçasıyla başarısız bir test yazdık, sabit kodlanmış değerler kullanarak (Kırmızı 3)

Testi geçmek için sabit kodlanmış dizeleri ilgili etiketlere ekledik (Yeşil 3).

Bileşenin görselleriyle desteklenerek, dizelerden birini parametrize etmeye ve diğerlerini değiştirmeden bırakmaya karar verdik. Aracın bileşenin Düzenlemeünde olduğu kadar tasarımda da yardımcı olması önemliydi.

Parametrize edilmiş "mesaj" dizesi için bir özellik ekledik ve bunun için başarısız bir test yazdık (Kırmızı 4).

Bir prop türü eklemek, bileşene bir argüman eklemek ve değeri işlev dönüşünde / oluşturmada kullanmak şeklindeki modeli izledik.

Evet ve Hayır düğmeleri için tıklama işleyici testleri ekledik (Kırmızı 5, 6) ve bileşene özelliklerle birlikte türler, argümanlar ve onClick nitelikleri ekledik (Yeşil 5, 6).

Bileşenin koşullu oluşturma ile kullanılabilmesini sağlamak için, bileşen testinde bir yardımcı işlev, boolean koşullu oluşturma içeren bir üst bileşen oluşturduk (Düzenleme 6).

Ana Fikirler

  • Bileşen testinin görsel sonuçları, bileşeni yeniden düzenlemeye ve tasarlamaya yardımcı olabilir.

  • Birinci bölümde de gördüğümüz gibi, TypeScript ve ESlint de bize Kırmızı veren "testler" olarak hizmet edebilir.

Last updated