FrontEnd

견고한 JS 소프트웨어 만들기 강의노트1

SambaLim 2019. 9. 15. 23:57
1_TDD_이론_및_패턴_소개

인프런에서 견고한 JS 소프트웨어 만들기를 수강하며 적은 강의노트입니다.

보다 자세한 내용은 강의를 통해 확인하실 수 있습니다.

 

아리송한 상황들

자바스크립트는 빌드과정이 없기때문에 실행하기전 코드의 에러를 검출할 수 없습니다.

또한 타입이 헷갈릴 때도 있습니다.

컴파일러가 없으니 테스트가 최선이다.

이러한 문제를 극복할 방법으로 테스트주도개발(TDD)에 대해 알아보자!

JS 소프트웨어를 견고하게 만드는 것이 이 강의의 목표.

 

몇 가지 테스트 개념들

단위 테스트

단위(Unit): Input에 따라 계산한 결과를 Output으로 내놓는 것 (대게 함수로 표현)

준비(arrange, Input을 준비함), 실행(act, Input을 받아 실행함), 단언(assert, 결과를 검증) 패턴을 따른다.

테스트 주도 개발

단위 테스트를 기반으로 진행함

적색, 녹색, 청색(리팩터) 순환

 

설치 (재스민 프레임워크)

https://jasmine.github.io/pages/getting_started.html

테스트 러너(Test Runner): 재스민, 소스, 테스트 코드를 실행 (Stand alone으로 설치한 재스민은 HTML 파일이 테스트 러너)

설치방법

  1. Stand alone
  2. 카르마(karma)와 함께 설치 (자동화)

다운로드

  • 학습할 소스코드 다운로드
  • 소스설명

 

테스트할 수 없는 코드

문제점

1. 관심가 분리되지 않음

onclick내에서 counter++; countDisplay()

클릭 이벤트 처리기를 인라인 형태로 정의

2. 재사용성이 떨어짐

counter를 전역으로 사용하여 전역 Scope를 어지럽힘

횟수를 표시하는 span의 id를 displayCount함수에서 하드코딩함 (아이디를 직접 알려줌)

테스트 할 방법

  1. 코드를 UI에서 분리
  2. 자바스크립트를 별도 파일로 분리

 

모듈 패턴

함수로 데이터를 감추고, 모듈 API를 담고 있는 객체를 반환하는 형태

  1. 임의 함수를 호출하여 생성하는 모듈
  2. 즉각 실행 함수(IIFE) 기반의 모듈

임의 모듈 패턴

즉각 실행 함수(IFEE) 모듈 패턴

싱글톤 인스턴스가 됨

모듈 생성 원칙

  1. 단일 책임 원칙에 따라 모듈은 한 가지 역할만 한다.
  2. 모듈 자신이 사용할 객체가 있다면 의존성 주입 형태로 제공한다.