Dart:
테스트 코딩하기
방법:
Dart에서는 test
패키지를 일반적으로 테스트 작성에 사용합니다. 먼저 pubspec.yaml
에 test
패키지를 추가합니다:
dev_dependencies:
test: ^1.0.0
그 다음, 간단한 함수에 대한 테스트를 작성합니다. 두 숫자를 더하는 함수가 있다고 가정해 보겠습니다:
int add(int a, int b) {
return a + b;
}
다음으로, test
디렉토리에 add_test.dart
라는 파일을 생성하고 테스트 케이스를 작성합니다:
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를 사용하여 모의 객체를 생성할 수 있습니다. 먼저 pubspec.yaml
에 Mockito를 추가합니다:
dev_dependencies:
mockito: ^5.0.0
사용자 데이터를 가져오는 UserRepository
클래스가 있고 실제 데이터베이스에 접근하지 않고 UserRepository
에 의존하는 UserService
를 테스트하려고 한다고 가정합니다:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:your_project/user_repository.dart';
import 'package:your_project/user_service.dart';
// Mockito를 사용하여 Mock 클래스 생성
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: '테스트 사용자'));
// 모의 메소드가 예상된 인자로 호출되었는지 단언
expect(userService.getUserName(1), '테스트 사용자');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
이 테스트를 실행하면 UserService
가 UserRepository
와 올바르게 상호 작용하며, 모킹을 사용하여 실제 상호 작용을 제어된 방식으로 시뮬레이션하는 것을 확인할 수 있습니다.