概要
SQL実行で値を取得した時に、値がどうなっているかを条件に分岐処理をすることがあります。
その箇所のテストパターンを考えていると、ややこしくなったのであらためて整理したいと思います。
使用する「user_info」テーブル
id | name | age | email_address |
---|---|---|---|
1 | Asann | 15 | A@A.com |
2 | Bsann | 20 | B@B.com |
3 | Csann | 25 | NULL |
テストパターン
4パターン考えられる。
1. SQL実行後ヒットし、値が存在している
select email_address from user_info where age = 15;
実行結果
email_address |
---|
A@A.com |
1 row in set (0.00 sec)
1件は取得できている。
2. SQL実行後ヒットし、値が存在していない
select email_address from user_info where age = 25;
実行結果
email_address |
---|
NULL |
1 row in set (0.00 sec)
1件は取得できているが、値はNULLであり存在していない。
3. SQL実行後ヒットしない(0件)
select email_address from user_info where age = 30;
実行結果
Empty set (0.00 sec)
該当するレコードが存在しない。
4. SQL実行途中でエラーが発生
例外処理でcatch
する。