Flutter - Test 2편

2023. 11. 10. 10:33·Flutter
728x90
반응형

2.이메일과 주민번호 테스트하기

2.1 테스트 예제 - 주민번호 확인하기 ( social security number validator )

주민 번호는 앞에는 생년월일, 뒤에는 성별 및 주소로 되어 있죠.

이를 확인하는 정규표현식을 작성해 보겠습니다.

 

field_validator.dart

class FieldValidator {
  
  static bool validateSocialSecurityNumber(String input) {
    if (input.isEmpty) return false;
​
    Pattern pattern = r'^[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|[3][01])-([1-4][0-9]{6})'; 
    RegExp exp = RegExp(pattern);
​
    if (exp.hasMatch(input)) return true; // 유효한 주민번호면 true 리턴
​
    return false;
  }
  
}

정규표현식과 매칭되면 true를 반환하고 아니면 false를 반환합니다..

 

이제 함수를 테스트 해볼게요.

 

911222-2110332 , 761031-1518312, 983015-1910312 를 넣어볼건데요.

911222-2110332 , 761031-1518312 은 true를 반환하고

983015-1910312 은 983015니 (30월이니) false를 반환해야겠죠.

 

정말 그런지 테스트 해볼께요.

 

test/field_validator_test.dart

void main() {
  group('field validator test', () {
​
    test('validate Social Security Number', () {
​
      final String socialNumber = "911222-2110332";
      expect(FieldValidator.validateSocialSecurityNumber(socialNumber), true);
​
      final String socialNumber2 = "761031-1518312";
      expect(FieldValidator.validateSocialSecurityNumber(socialNumber2), true);
​
      final String socialNumber3 = "983015-1910312";
      expect(FieldValidator.validateSocialSecurityNumber(socialNumber3), false); 
    });
  });
}

 

예상대로 테스트를 통과하네요.

이해를 위해 테스트를 좀 더 해볼게요.

 

이메일을 확인하는 함수를 작성하고 테스트 해보겠습니다. .

 

2.2 테스트 예제 - 이메일 확인하기 ( email validator )

아래 코드를 봐주세요.

validateEmail()는 이메일 형식에 맞으면 true를 반환하고, 아니면 false를 반환하는 함수입니다.

 

field_validator.dart

class FieldValidator {
​
  static bool validateEmail(String email) {
    if (email.isEmpty) return false;
​
    Pattern pattern = r'^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$'; 
    RegExp exp = RegExp(pattern);
​
    if (exp.hasMatch(email)) return true; // 유효한 이메일이면 true 리턴
​
    return false;
  }
  
}

 

테스트 케이스는 2개를 작성했습니다.

jootest@gmail.com, jootest #@gmail.com 란 입력인데요.

badday#@gmail.com 은 #이 들어있어서 유효한 이메일이 아닙니다.

2 케이스 다 통과할거라고 테스트 함수를 짜면, 하나는 실패하겠죠?

정말 그런지 볼게요.

 

test/field_validator_test.dart

import 'package:test/test.dart';
import '../src/field_validator.dart';


void main() {
  group('field validator test', () {

    test("validateEmail", (){
      const String email1 = "jootest@gamil.com";

      expect(FieldValidator.validateEmail(email1), true); // 통과할거로 예상하고 통과

      const  String email2 = "jootest#@gmail.com";

      expect(FieldValidator.validateEmail(email2), true , reason: '# is a not valid character'); // 통과할 거로 예상했으나 통과하지 못하기에 test fail
    });
  });
}

 

테스트 실행결과

Expected: <true>
  Actual: <false>
# is a not valid character

예상대로 이메일 jootest #@gmail.com는 테스트를 통과하지 못하네요.

이번엔 expect() 에다 reason 을 적어줬습니다. reason을 적으면 테스트가 실패한 원인을 알려줍니다.

728x90
반응형
LIST

'Flutter' 카테고리의 다른 글

Flutter 네이티브 연결  (1) 2023.11.14
Flutter - 테스트 종류  (2) 2023.11.10
Flutter - Unit Testing  (1) 2023.11.10
Flutter - ListView  (0) 2023.11.08
Flutter - Scaffold  (1) 2023.11.08
'Flutter' 카테고리의 다른 글
  • Flutter 네이티브 연결
  • Flutter - 테스트 종류
  • Flutter - Unit Testing
  • Flutter - ListView
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (214) N
      • Flutter (70)
      • Android (9)
      • Swift (4)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (103) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    DART
    앱 개발
    오늘의 개발 뉴스
    뉴스
    Dart 기초
    오늘의 뉴스
    react
    오늘의 이슈
    앱
    플러터
    앱개발
    개발 뉴스
    Flutter
    개발
    개발 이슈
    이슈
    오늘의 기술 뉴스
    기술
    뉴스 모음
    기술 뉴스
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Flutter - Test 2편
상단으로

티스토리툴바