CodeBlanks Logo Icon CodeBlanks

fireEvent

fireEvent ile olay tetiklemeyi öğrenirsin.

fireEvent nedir?

fireEvent, test içinde kullanıcı olaylarını taklit eden RNTL fonksiyonudur. fireEvent.press(element) bir butona basma, fireEvent.changeText(element, 'metin') metin girişini simüle eder. Bileşenin tepkisini test etmenizi sağlar.

Tipik akış: bileşeni render ile çizer, getByText ile bir buton bulur, fireEvent.press ile basar ve sonucunu expect ile denetlersin. Bu, gerçek bir kullanıcının yaptığını test ortamında yapar. fireEvent senkron çalışır; olay işleyici bitince çizim güncellenir. Asenkron işlemler için waitFor gerekir.

Uygulama fireEvent ile bas

Bir App bileşeni zaten tanımlı; bir buton ve sayaç içerir. render(<App />) ile çiz. getByText('Artır') ile butonu bul. fireEvent.press ile bas. getByText('1') ile sonucu denetle.

Başlangıç kodu

App.js
// render ve fireEvent'i içe aktar

// 'butona basınca artar' adında bir test yaz
// render ile App'i çiz; getByText ile 'Artır' butonunu bul; fireEvent.press ile bas; getByText ile '1' i denetle

Örnek çözüm

App.js
import { render, fireEvent } from "@testing-library/react-native";
import { Button, Text, View } from "react-native";
import { useState } from "react";

function App() {
  const [count, setCount] = useState(0);
  return (
    <View>
      <Text>{count}</Text>
      <Button title="Artır" onPress={() => setCount(count + 1)} />
    </View>
  );
}

test("butona basınca artar", () => {
  const { getByText } = render(<App />);
  fireEvent.press(getByText("Artır"));
  expect(getByText("1")).toBeTruthy();
});

Press olayı

fireEvent.press(element) bir öğeye basma olayı gönderir. onPress prop'u olan her bileşende çalışır: Button, TouchableOpacity, Pressable. Öğe getByText veya getByTestId ile bulunur.

Basma olayı, onPress işleyicisini çağırır; state güncellenir ve çizim yenilenir. Sonraki getByText çağrısı yeni durumu görür. fireEvent.changeText ise TextInput'a metin girişini simüle eder; onChangeText işleyicisini çalıştırır. Her olay türü için ayrı bir metod vardır: fireEvent.scroll, fireEvent.focus vb. Doğru metodu seçmek, testin gerçekçi olmasını sağlar.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 fireEvent ne yapar?

App.js
fireEvent.press(button);
  • Bileşeni stillendirir
  • Kullanıcı olaylarını taklit eder Doğru cevap
  • Veriyi saklar
  • Ağa istek atar

Açıklama: fireEvent kullanıcı olaylarını taklit eder.

2 fireEvent çağrısı

Soru
fireEvent.____(button);
Cevap
fireEvent.press(button);

Açıklama: fireEvent.press basma olayını simüle eder.

3 Olayı rolüne eşle

Kavram Anlamı
fireEvent.press Butona basar
fireEvent.changeText Metin girer
fireEvent.scroll Kaydırır
fireEvent.focus Odaklar

Orta seviye bölümündeki tüm dersler