Dart:
כתיבת בדיקות

איך לעשות:

ב-Dart, החבילה test משמשת לעיתים קרובות לכתיבת טסטים. ראשית, הוסף את חבילת הtest לpubspec.yaml שלך:

dev_dependencies:
  test: ^1.0.0

לאחר מכן, כתוב טסט לפונקציה פשוטה. נניח שיש לך פונקציה שמוסיפה שני מספרים:

int add(int a, int b) {
  return a + b;
}

לאחר מכן, צור קובץ בשם add_test.dart בתיקייה test וכתוב את מקרה הבדיקה שלך:

import 'package:test/test.dart';
import '../lib/add.dart'; // נניח שהפונקציה `add` שלך נמצאת בlib/add.dart

void main() {
  test('מוסיפה שני מספרים', () {
    var expected = 3;
    expect(add(1, 2), equals(expected));
  });
}

להרצת הטסטים, השתמש בפקודת Dart:

$ dart test

פלט לדוגמה עשוי להיראות כך:

00:01 +1: כל הטסטים עברו!

שימוש בספרייה צד שלישי: Mockito למוקינג

לבדיקת קוד שיש לו תלות מורכבת, ייתכן שתשתמש ב-Mockito ליצירת אובייקטים מדומים. ראשית, הוסף את Mockito לpubspec.yaml שלך:

dev_dependencies:
  mockito: ^5.0.0

נניח שיש לך מחלקה UserRepository שמשיגה נתוני משתמש, וברצונך לבדוק שירות UserService שתלוי ב-UserRepository ללא היכנסות למסד נתונים אמיתי:

import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';

// יצירת כיתת Mock באמצעות Mockito
class MockUserRepository extends Mock implements UserRepository {}

void main() {
  group('בדיקות UserService', () {
    test('משיג משתמש בהצלחה', () {
      // יצירת מופע מדומה
      final mockUserRepository = MockUserRepository();
      final userService = UserService(mockUserRepository);

      // הגדרת התנהגות מדומה
      when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Test User'));

      // טענה שהמתודה המדומה נקראה עם הארגומנטים הצפויים
      expect(userService.getUserName(1), 'Test User');
      verify(mockUserRepository.fetchUser(1)).called(1);
    });
  });
}

הרצת הטסט מאשרת ש-UserService מתקשרת נכון עם UserRepository, באמצעות מוקינג כדי לדמות את האינטראקציות האמיתיות בדרך שליטה.