Dart:
Viết bài kiểm tra

Làm thế nào:

Trong Dart, gói test thường được sử dụng để viết kiểm tra. Đầu tiên, thêm gói test vào pubspec.yaml của bạn:

dev_dependencies:
  test: ^1.0.0

Sau đó, viết một kiểm tra cho một hàm đơn giản. Giả sử bạn có một hàm cộng hai số:

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

Tiếp theo, tạo một tệp tên add_test.dart trong thư mục test và viết trường hợp kiểm tra của bạn:

import 'package:test/test.dart';
import '../lib/add.dart'; // Giả sử hàm `add` của bạn nằm trong lib/add.dart

void main() {
  test('cộng hai số', () {
    var expected = 3;
    expect(add(1, 2), equals(expected));
  });
}

Để chạy các bài kiểm tra, sử dụng lệnh Dart:

$ dart test

Kết quả mẫu có thể giống như:

00:01 +1: Tất cả các bài kiểm tra đã vượt qua!

Sử dụng một thư viện bên thứ ba: Mockito để mô phỏng (mocking)

Đối với việc kiểm tra mã có các phụ thuộc phức tạp, bạn có thể sử dụng Mockito để tạo các đối tượng mô phỏng. Đầu tiên, thêm Mockito vào pubspec.yaml của bạn:

dev_dependencies:
  mockito: ^5.0.0

Giả sử bạn có một lớp UserRepository lấy dữ liệu người dùng, và bạn muốn kiểm tra UserService phụ thuộc vào UserRepository mà không tác động đến cơ sở dữ liệu thực:

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

// Tạo một lớp Mock sử dụng Mockito
class MockUserRepository extends Mock implements UserRepository {}

void main() {
  group('Các kiểm tra UserService', () {
    test('Lấy người dùng thành công', () {
      // Tạo ra một instance mô phỏng
      final mockUserRepository = MockUserRepository();
      final userService = UserService(mockUserRepository);

      // Thiết lập hành vi mô phỏng
      when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Test User'));

      // Kiểm tra rằng phương thức mô phỏng được gọi với đối số mong đợi
      expect(userService.getUserName(1), 'Test User');
      verify(mockUserRepository.fetchUser(1)).called(1);
    });
  });
}

Chạy bài kiểm tra này xác nhận rằng UserService tương tác đúng cách với UserRepository, sử dụng mô phỏng để mô phỏng các tương tác thực một cách có kiểm soát.