React Testing Library'nin felsefesi nedir? Örnek bir test yazın.

Cevap

Felsefe: "Testleriniz yazılımın kullanıldığı şekle ne kadar benzerse, size o kadar güven verir." Bileşenin iç state'ini veya implementasyon detaylarını değil, kullanıcının gördüğünü ve yaptığını test edin.

Elemanlar kullanıcının bulduğu şekilde aranır: önce getByRole, sonra getByLabelText, getByText. data-testid son çaredir.

import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";

test("geçersiz e-postada hata mesajı gösterir", async () => {
  const kullanici = userEvent.setup();
  render(<KayitFormu />);

  await kullanici.type(screen.getByLabelText(/e-posta/i), "yanlis-adres");
  await kullanici.click(screen.getByRole("button", { name: /kayıt ol/i }));

  expect(screen.getByRole("alert")).toHaveTextContent("Geçerli bir e-posta girin");
});

Bu test, bileşen içeride useState yerine React Hook Form'a geçse bile bozulmaz.

  1. Playwright ile E2E testlerinde flaky (kararsız) testleri nasıl önlersiniz?ZorTestFrontend
  2. Testlerde mock, stub ve spy arasındaki fark nedir? Ne zaman mock kullanmamalısınız?OrtaTestFrontend
  3. Unit, integration ve end-to-end (E2E) test arasındaki fark nedir?OrtaTestFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle