Sparround

Unit və golden testlər

Unit test Flutter-dən asılı olmayan Dart kodunu yoxlayır: repository, ViewModel/Cubit, hesablama funksiyaları, validasiya qaydaları. Millisaniyələrlə işləyir, ona görə testlərin əksəriyyəti bu səviyyədə olmalıdır.

Asılılıqlar saxta ilə əvəzlənir. İki üsul var:

  • Əl ilə yazılmış fake — kiçik interfeys üçün ən oxunaqlı variant
  • Mock kitabxanası (mocktail) — çağırışların yoxlanması (verify) və mürəkkəb davranış lazım olanda

Sadə hallarda əl ilə fake mock-dan oxunaqlı olur — bunu qeyd etmək interview-də balanslı düşüncəni göstərir.

Golden test (screenshot test) widget-in görünüşünü referans şəkillə müqayisə edir. Vizual reqressiyanı tutur: rəng, boşluq, şrift, düzülüş dəyişikliyi.

Faydası: dizayn sistemi komponentləri üçün əla — düymənin görünüşü təsadüfən dəyişsə, test bunu tutur.

Çatışmazlığı və real ağrısı: platformalar arası fərq. Şrift rendering-i macOS, Linux və CI arasında fərqlənir, ona görə lokalda keçən golden test CI-da sına bilər. Praktik həll: golden-ləri CI ilə eyni mühitdə generasiya etmək (adətən Docker konteynerində) və şrift yükləməsini testdə açıq etmək.

Interview ipucu. Golden testlər barədə soruşularsa, üstünlüyünü və xərcini birlikdə de. Onlar vizual reqressiyanı tutur, amma səhv müsbətlər (false positive) yaradır və hər dizayn dəyişikliyində yenilənməlidir. Mənim tövsiyəm: golden-ləri dizayn sistemi komponentləri üçün istifadə etmək, bütöv ekranlar üçün yox — ekran golden-ləri çox tez köhnəlir və komanda onları düşünmədən yeniləməyə başlayır, bu isə testi mənasız edir.

📚 Mənbələr və sənədlər