CodeStates / Pair - Testbuilder 작성하기: Step ONE

WeWorship TV·2020년 8월 19일

Step One에는 다음과 같은 지문이 작성되어 있다.


STEP ONE:

여러분의 목표는, 신용카드 번호를 바탕으로 해당 신용카드가 어떠한 발급기관(network)에 속해 있는지 알아낼 수 있는 함수를 작성하는 것입니다.

여러분은 detectNetwork.js 파일 안에다 이 함수를 작성하게 될 것입니다.
detectNetwork.js은 브라우저의 script 태그를 이용해서 이미 로딩되어 있습니다.

만일 여러분들이 함수에 작은 변화를 만들었다면, 브라우저를 새로고침 해야만 합니다.
앞으로 STEP이 진행될 때마다 브라우저를 새로고침 해야 할텐데, 다행히도 TestBuilder는 여러분이 이전에 완료된 STEP의 대해 진행 상황을 저장합니다.

지금부터 detectNetwork.js 파일을 살펴보시고, 다음 안내를 따라주세요.detectNetwork 함수를 작성 완료하셨나요?
작성이 끝나고 테스트할 준비가 완료됬다면, console창에 아래와 같이 입력해보세요

detectNetwork('38345678901234')

만일 다음 출력을 보셨다면, 아주 잘 하고 계신겁니다!

"Diner's Club"

만일 그렇지 않은 경우는, 다시 돌아가서 함수를 수정할 수 있습니다.
함수를 수정하셨다면, 새로고침 하는 것을 잊지 말아주세요.
다음은 여러분이 여러분이 작성한 함수가 접두사와 카드번호 길이의 모든 조합에 대해 정상적으로 작동하는지 확인할 수 있는 카드번호 목록입니다.

38345678901234 (Diner's Club)
39345678901234 (Diner's Club)
343456789012345 (American Express)
373456789012345 (American Express)

console 에서 위의 카드번호들을 detectNetwork와 함께 실행시켜보세요.
위의 카드번호에서 detectNetwork 함수가 올바른 발급기관을 리턴하나요?
모든 조합이 잘 작동되면 이제 nextStep()을 호출해서 다음 단계로 넘어갈 수 있습니다.

nextStep()


위의 지문처럼 detectNetwork.js의 파일을 수정하여 console창에서 위의 코드를 입력했을 때 정상적으로 나올 수 있도록 알맞게 수정해야 된다.

Diner's Club으로 리턴되게 하려면 다음의 조건을 만족해야 한다.

  • 38 혹은 39로 시작하고, 14자리의 숫자여야 한다.

이 조건을 만족하면 결과값으로 Diner's Club이라고 출력된다.

또, American Express로 리턴되게 하려면 다음의 조건을 만족해야 한다.

  • 34 혹은 37로 시작하고, 15자리의 숫자여야 한다.

우리가 배웠던 것 중 앞자리 숫자를 비교할 수 있게 도와주는 것들이 뭐가 있나 생각해 봤다.

앞자리의 숫자를 추출해라.......
.........................................

생각해봤더니 slice라는 method가 떠올랐다.
slice에 대한 사용법은 아래 링크를 참고하면 된다.
'slice Method 사용법'

slice를 사용하게 되면 아래와 같은 조건이 작성된다.

if (cardNumber.slice(0,2) === "38" || cardNumber.slice(0,2) === "37")

이런 방법으로 Code를 작성하는 방법도 있다.

그런데, Slice말고 다른 방법은 없나 구글을 열심히 검색해보기 시작했는데 또 하나의 Method가 발견되었다.
바로 startsWith!!!
startsWith 사용법은 아래 링크를 참고하면 된다.
'startsWith Method 사용법'

이렇게 Code를 작성하면 Step One의 지문이 해결된다.

profile
자 이제 시작이야 내 꿈을

0개의 댓글