CodeBlanks Logo Icon CodeBlanks

pump ve settle

pump ve pumpAndSettle ile animasyonlu testler yapmayı öğrenirsin.

pump ve pumpAndSettle

pump, bir frame ilerletir; pumpAndSettle ise animasyon ve timer'lar bitene kadar frame'leri ilerletir. Animasyonlu widget'ları test ederken pump(Duration) ile zamanı ilerletir, sonra expect ile doğrularsın.

await tester.pumpWidget(MyAnimatedWidget());
await tester.pump(const Duration(seconds: 1));
await tester.pumpAndSettle();
expect(find.text('Bitti'), findsOneWidget);

Duration ile pump

pump(Duration) belirli bir süredeki frame'leri tetikler; animasyonun ara durumlarını test etmeyi sağlar. pumpAndSettle ise animasyonlar bitene kadar 100ms aralıklarla ilerletir.

Uygulama Animasyonlu test

main içinde 'animasyon biter' adlı bir testWidgets testi yaz. pumpWidget ile MaterialApp(home: Text('Bitti')) render et. pumpAndSettle çağır. find.text('Bitti') ve findsOneWidget ile doğrula. Son olarak 'test tanimlandi' yazdır.

Başlangıç kodu

main.dart
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';

void main() {
  // 'animasyon biter' adlı testWidgets testi yaz
  // pumpWidget ile MaterialApp içinde Text render et
  // pumpAndSettle ile animasyonların bitmesini bekle
  // find.text ile metni bul ve findsOneWidget ile doğrula
  // son olarak 'test tanimlandi' yazdir
}

Örnek çözüm

main.dart
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';

void main() {
  testWidgets('animasyon biter', (tester) async {
    await tester.pumpWidget(
      const MaterialApp(home: Text('Bitti')),
    );
    await tester.pumpAndSettle();
    expect(find.text('Bitti'), findsOneWidget);
  });
  print('test tanimlandi');
}

Beklenen çıktı

test tanimlandi

Soru ve cevaplar

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

1 pumpAndSettle ne yapar?

  • Widget'ı render eder
  • Tüm animasyon ve timer'lar bitene kadar ilerletir Doğru cevap
  • Testi durdurur
  • Bir frame ilerletir

Açıklama: pumpAndSettle, artık değişiklik olmayana kadar frame'leri ilerletir; animasyonların tamamlanmasını bekler.

2 pumpAndSettle çağrısı

Soru
await tester.____();
Cevap
await tester.pumpAndSettle();

Açıklama: tester.pumpAndSettle tüm animasyonlar bitene kadar frame ilerletir; pump ise yalnızca bir frame veya belirli Duration kadar ilerletir.

3 pump eşleşmeleri

Kavram Anlamı
pump Bir frame ilerletir
pumpAndSettle Animasyon bitene kadar ilerletir
Duration Zaman aralığı
pumpWidget İlk render

İleri seviye bölümündeki tüm dersler