はじめに
FlutterやDartでアプリを作るときに欠かせないことは、当たり前のことですがちゃんと動くか動作確認することです!
でも毎回やるのはちょっと大変、、、そんな時に便利なのが、自動的にテストしてくれるインテグレーションテスト(統合テスト)です!
そのテストでよく使うのが expect です。expect を使うと、「ある値」が「期待した値」と同じかどうかをチェックできます。今回は、expect の使い方や便利な機能を説明します!
expect の基本ルール
expect の基本は、「テストする値」と「期待する条件」をセットで書くことです。
expect(actual, matcher, reason: 'エラー時のメッセージ');
-
actual: 実際にテストする値や結果 -
matcher: 期待する条件や値 -
reason: テストが失敗したときに出すメッセージ(オプション)
基本的な使い方
expect(2 + 2, equals(4)); // 2 + 2が4か?
expect('Hello Flutter', contains('H')); // 'H'が含まれているか?
expect([1, 2, 3], isNotEmpty); // リストが空じゃないか?
expect(5, greaterThan(3)); // 数値が3より大きいか?
マッチャーって何? なぜ必要?
「マッチャー」は、expect の条件をもっとわかりやすくするためのものです。
1. 何をチェックしているのかがわかりやすい
マッチャーを使うと「何を確認したいのか」が明確になります。
ただの比較よりも、equalsを使った方が読みやすくなります。
expect(2 + 2, equals(4)); // 「2+2が4であること」を確認
2. いろんな条件を簡単にチェックできる
マッチャーにはequals以外にも、範囲や特定の条件をチェックするものがあります。
複雑なテストも短く簡単に書くことができます。
expect(score, greaterThan(50)); // scoreが50より大きいか?
3. エラーの原因がわかりやすくなる
マッチャーを使うと失敗したときのメッセージも具体的です。
どのテストが失敗したかがすぐわかり、修正しやすくなります。
4. コードの再利用や修正がしやすい
マッチャーは共通ルールなので、複数の場所で使いやすいことも利点の一つです。
また、独自のマッチャーを作ってテストコードを整理することもできます。
主なマッチャー
1. equals(expectedValue)
値が期待通りかを確認します。
expect(result, equals(10)); // result が 10 か
2. isNull / isNotNull
値がnull(何もない状態)か、またはnullでないかをチェックします。
expect(value, isNull); // 値が null か
expect(value, isNotNull); // 値が null でないか
3. contains(element)
文字列やリストに特定の要素が含まれているかを確認します。
expect('Flutter', contains('Flut')); // 'Flutter' に 'Flut' が含まれるか
4. isTrue / isFalse
値がtrueまたはfalseかを確認します。
expect(isLoggedIn, isTrue); // ログイン状態が true か?
expect(hasError, isFalse); // エラー状態が false か?
5. greaterThan(value) / lessThan(value)
値が特定の数より大きいか小さいかをチェックします。
expect(score, greaterThan(70)); // スコアが70より大きいか?
expect(temperature, lessThan(100)); // 温度が100未満か?
まとめ
expect を使えば、アプリがちゃんと動くか簡単にテストすることが可能になります!
また、マッチャーを活用することでテストが読みやすく書きやすくなり、失敗しても原因がわかりやすくなるので、テストを作成する際は参考にしてみてください!