hi hi ສະບາຍດີທຸກຄົນທີ່ກຳລັງສຶກສາ flutter ມື້ນີ້ຂໍສະເໜີຄຳວ່າ “Unit Testing” 555.
ບລອກນີ້ເກີດຂື້ນຈາກການແນມໄປເຫັນ test folder ໃນໂປຣເຈັກທີ່ກຳລັງເຮັດຢູ່ ເປັນ folder ທີ່ວ່າງແຮງ ^^’. ກໍເລີຍຈັບມາເປັນຫົວຂໍ້ແນະນຳ ແລ້ວກໍຂຽນເທສຂອງໂປຣເຈັກໄປພ້ອມເລີຍ 555.
unit testing ຄືການເອົາ function ຫຼື class ທີ່ເຮົາສ້າງມາເທສເທື່ອລະອັນວ່າໂລຈິກຂອງຟັງຊັ່ນພວກນີ້ເປັນໄປຕາມທີ່ມັນຄວນຈະເປັນແລ້ວບໍ່ ຕາມຊື່ເລີຍ.
# ເລີ່ມຕົ້ນດ້ວຍການໄປທີ່ pubspec.yaml ເພີ່ມ flutter_test ໃນສ່ວນຂອງ dev_dependencies
dev_dependencies:
flutter_test:
ຕໍ່ດ້ວຍການ ກຽມ function ທີ່ຕ້ອງການເທສ
# ສ້າງ counter.dart file ຢູ່ lib folder lib/counter.dart
class Counter {
int value = 0;
void increment() => value++;
}
ມາເລີ່ມຂຽນເທສສຳຫລັບ function ທີ່ກຽມໄວ້ກັນເລີຍ
# ສ້າງ counter_test.dart file ຢູ່ໃນ test folder test/counter_test.dart
ການຂຽນເທສໃນ flutter ເຮົາຈະໃຊ້ຄຳສັ່ງ expect(ຄ່າທີ່ໄດ້ຈາກ function, ຄ່າທີ່ເຮົາຄາດວ່າຄວນຈະໄດ້); ເພື່ອກວດສອບຜົນລັບທີ່ໄດ້ຈາກ function
void main() {
test('Counter value increment', () {
final counter = Counter();
counter.increment(); // function ນີ້ຈະເພີ່ມຄ່າຂອງ value ຂື້ນ +1 ທຸກໆເທື່ອທີ່ເອີ້ນໃຊ້ຄຳສັ່ງ
expect(counter.value, 1); // ຄ່າທີ່ຄວນຈະໄດ້ຈາກ function ຄວນຈະເປັນ 1 ເພາະເຮົາເອີ້ນໃຊ້ function ແຕ່ເທື່ອດຽວ
});
}
ໃນກໍລະນີທີ່ການເທສມີຫລາຍເຄສ ຫຼື ຫຼາຍຟັງຊັ່ນເຮົາສາມາດຈັດເທັດເປັນ group ແລ້ວ test ສະເພາະ group ທີ່ຕ້ອງການໄດ້
void main() {
group('increment', () {
final counter = Counter();
test('value start at 0', () {
expect(counter.value, 0);
});
test('value should be 1', () {
counter.increment();
expect(counter.value, 1);
});
test('value should be 2', () {
counter.increment();
expect(counter.value, 2);
});
});
}
ຄຳສັ່ງທີ່ໃຊ້:
flutter test test_file_path
ເພື່ອ run ເທສເຄສ (Test Case) ທັງຫມົດ
flutter test test_file_path --name group_name
ເພື່ອ test ສະເພາະ group ທີ່ຕ້ອງການ
ຜົນລັບທີ່ໄດ້ໃນກໍລະນີທີ່ເທສຜ່ານທັງຫມົດ
ໃນກໍລະນີທີ່ເທສບໍ່ຜ່ານບາງເຄສ
ສາມາດເຂົ້າໄປອ່ານຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການເທສແບບອື່ນໆຕາມລິ້ງນີ້ໄດ້ເລີຍ https://docs.flutter.dev/testing
ຫວັງວ່າຈະເປັນປະໂຫຍດກັບຄົນທີ່ເຂົ້າມາອ່ານບໍ່ຫລາຍກໍຫນ້ອຍເດີ 😀
ຂຽນໂດຍ: Bout Khanthavong