CodeBlanks Logo Icon CodeBlanks

Mock

mockito ile mock öğrenirsin.

Mock ile sahte bağımlılık

Mock, gerçek bir bağımlılığın sahte bir sürümüdür. Dış servisleri (HTTP, veritabanı) testten uzak tutmak için kullanılır. Dart'ta mockito paketi yaygındır.

Bir mock sınıfı class MockHttp extends Mock implements HttpClient {} biçiminde yazılır. Sonra when(mock.get()).thenReturn('veri') ile davranışı belirlersin.

Böylece test, gerçek ağ çağrısı yapmadan öngörülebilir sonuçlar alır. Hızlı ve kararlı olur.

when ve verify

Mockito'da when(mock.fetch()).thenReturn('veri') ile bir metodun dönüş değerini belirlersin. Test sırasında mock.fetch() çağrılınca 'veri' döner; gerçek bir çağrı yapılmaz.

verify(mock.fetch()) ile metodun çağrılıp çağrılmadığını denetlersin. Bu, etkileşimleri sınamak için kullanışlıdır ve beklenen akışı doğrular.

Basit durumlarda elle yazılmış bir sahte sınıf da yeterlidir; mockito her zaman gerekli değildir.

Uygulama WeatherService sahtesi

Bir abstract class WeatherService tanımla: String temperature() metodu olsun. Bir FakeWeatherService implements WeatherService sınıfı yaz; temperature() metodu '22C' döndürsün. main içinde bir FakeWeatherService oluştur ve temperature() sonucunu print ile yazdır.

Başlangıç kodu

main.dart
// WeatherService soyut sınıfını tanımla
// FakeWeatherService sahte sınıfını tanımla

void main() {
  // sahte servisin temperature sonucunu yazdır
}

Örnek çözüm

main.dart
abstract class WeatherService {
  String temperature();
}

class FakeWeatherService implements WeatherService {
  @override
  String temperature() => '22C';
}

void main() {
  var s = FakeWeatherService();
  print(s.temperature());
}

Beklenen çıktı

22C

Soru ve cevaplar

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

1 Mock ne işe yarar?

  • Sahte bir bağımlılık sağlar Doğru cevap
  • Gerçek ağ çağrısı yapar
  • Bir döngü kurar
  • Bir dosya siler

Açıklama: mock sahte bir bağımlılık sağlar.

2 mockito içe aktarımı

Soru
import 'package:mockito/____.dart';
Cevap
import 'package:mockito/mockito.dart';

Açıklama: mockito paketi bu yolla içe aktarılır.

3 Mock parçaları

Kavram Anlamı
class FakeWeatherService Sahte sınıf
when(...).thenReturn Davranış belirleme
verify(...) Çağrı denetimi
Mock mockito temel sınıfı

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