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
, באמצעות מוקינג כדי לדמות את האינטראקציות האמיתיות בדרך שליטה.