はじめに
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
を使えば、アプリがちゃんと動くか簡単にテストすることが可能になります!
また、マッチャーを活用することでテストが読みやすく書きやすくなり、失敗しても原因がわかりやすくなるので、テストを作成する際は参考にしてみてください!