Dart:
テストの作成
どうやって:
Dartでは、test
パッケージがテストの記述に一般的に使用されます。まず、pubspec.yaml
にtest
パッケージを追加します:
dev_dependencies:
test: ^1.0.0
次に、シンプルな関数のテストを書きます。2つの数値を加算する関数があるとします:
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('2つの数値の加算', () {
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
と正しく相互作用し、モッキングを使用して実際の相互作用を制御された方法でシミュレートすることを確認します。