CodeBlanks Logo Icon CodeBlanks

Mock advanced

Gelişmiş mock ve stub öğrenirsin.

Mock advanced

Gelişmiş mock, bir bağımlılığın davranışını taklit eder. when(mock.fetch()).thenReturn(5) ile sabit dönüş değeri; verify(mock.fetch()) ile çağrı denetimi yapılır.

Stub (koçan): çağrılınca sabit değer döner. Spy (casus): hem değer döner hem çağrıları kaydeder. Mock: çağrı beklentilerini denetler.

Bu araçlar, gerçek bir veritabanı veya API olmadan alan mantığını sınamayı sağlar. Test hızlı, tekrarlanabilir ve izoledir.

Stub ve spy ayrımı

Stub, yalnızca sabit değer döner; çağrıları kaydetmez. Hızlıdır; basit dönüş değerleri için kullanılır.

Spy, hem değer döner hem çağrıları kaydeder. spy.callCount ile kaç kez çağrıldığı okunur. Davranış denetimi gerektiğinde spy kullanılır.

Mock, spy'a ek olarak çağrı beklentilerini de denetler: verify(mock.fetch()).called(2). Yani mock = stub + spy + beklenti denetimi.

Uygulama MockUserService tanımla

Bir User sınıfı tanımla: final String name; User(this.name);. Bir class MockUserService tanımla: User _stubbed; alanı, void stubFetch(User u) { _stubbed = u; } ve User fetchUser() => _stubbed; metotları. main içinde final mock = MockUserService(); yarat; mock.stubFetch(User('Ayşe')); çağır; print(mock.fetchUser().name); ekle.

Başlangıç kodu

main.dart
void main() {
  // User sınıfını tanımla (name alanı)
  // MockUserService sınıfını tanımla (stubFetch, fetchUser metotları)
  // bir mock yarat; stub ile değer ver; fetchUser ile yazdır
}

Örnek çözüm

main.dart
class User {
  final String name;
  User(this.name);
}

class MockUserService {
  User _stubbed;
  void stubFetch(User u) {
    _stubbed = u;
  }
  User fetchUser() => _stubbed;
}

void main() {
  final mock = MockUserService();
  mock.stubFetch(User('Ayşe'));
  print(mock.fetchUser().name);
}

Beklenen çıktı

Ayşe

Soru ve cevaplar

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

1 Mock parçalarını eşleştir

Kavram Anlamı
Mock Sahte sınıf
when Stub başlangıcı
thenReturn Dönüş değeri
verify Çağrı denetimi

2 when(mock.fetch()).thenReturn(5) ne yapar?

  • fetch'i gerçekten çalıştırır
  • fetch'i yavaşlatır
  • fetch'i siler
  • fetch çağrılınca 5 döner Doğru cevap

Açıklama: thenReturn çağrılınca sabit değer döner.

3 thenReturn çağrısı

Soru
when(mock.fetch()).____(5);
Cevap
when(mock.fetch()).thenReturn(5);

Açıklama: thenReturn ile sabit dönüş değeri verilir.

Uzman bölümündeki tüm dersler