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 สำหรับ mocking
สำหรับการทดสอบโค้ดที่มีการพึ่งพาอย่างซับซ้อน, คุณอาจจะใช้ 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 Tests', () {
test('ดึงข้อมูลผู้ใช้อย่างสำเร็จ', () {
// สร้าง instance เลียนแบบ
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
ได้ถูกต้อง โดยใช้วิธี mocking เพื่อจำลองการโต้ตอบจริงในแบบที่ควบคุมได้.