단어장 앱에

테스트를 추가합니다

테스트 => 유닛테스트

Unit이란?

    * A single function or class.

    * 최소한의 코드 조각

Unit Test란?

    * 개발자가 자신이 구현한 Unit

생각한대로 작동하는 확인하는 행위

    * 유닛 테스트를 100% 구성하고 코드가 Pass 하면

      * [ ] 문제 없음을 확신하며 바로 배포 준비에 들어간다

      * [ ] 불안. 별도로 추가 테스트가 필요할 같다

Unit Test !== Test

 본인이 구현한 코드가 어떻게 작동하는 묘사한 설명서(사양서)

      * 테스트 코드를 보면 처음에는 낯선 단어들이 나옴

        * describe

        * context

        * it

  • 위와 같이 코드의 요구 사양과 테스트 코드를 100% 일치 시킬 있다.
  • 이런 것들을 코드 베이스의 모든 단위에 대해 수행하면 100% 커버가 코드베이스를 갖춘
describe(“getWordList”, () => { // test 하고자하는 함수 이름 혹은 클래스(컴포넌트) 이름
  context(“when user is logged in”, () => { // 어떤 조건인지를 명시하고 싶을때
    it(“returns 200 status code”, () => {
      // 실질적으로 테스트 하려는 것
    })
    it(“returns word list data code”, () => {
      // 실질적으로 테스트 하려는 것
    })
  })
})

프로덕트 단위의 테스트는 별도로 필요

* Integration Test

* End to End Test

* QA 부서

Unit Test는 왜 필요할까?

  •   굳이 필요 없을 것만 같다
  •   어느 정도는 공감을 하는 부분 (개인 취향)

  • **하지만** 다음과 같은 경우에는 필요

    • 본인의 코드를 다른 사람과 공유할 때

    • 오픈 소스, 단위의 프로젝트 작업

  • 코드를 **** 짜게끔 유도를 해준다

    • ​바람직한 경우, 예외의 경우

  • 리팩토링을 상대적으로 마음 편하게 있다

 

Unit Test의 범위는?

  •  코드 베이스 모든 코드 조각

하나의 js 파일 => 하나의 spec.js 파일

Unit Test는 언제?

  • 중요한 이슈
  • 실제 코드 작성하기 전에 테스트 코드 부터 작성
    • 비직관적이지만 생각해보면 사양서를 먼저 쓴다고 생각하면 됨
    • 이런식으로 작업하는 것이 TDD
  • 코드와 병행하면서 작성, 혹은 작성 직후 작성
    • 무난하면서 일반적인 접근
  • 코드 작성 후 테스트 작성
    • 거의 불가능. 내일부터 공부해야지 마인드

돈 받고 하는 코드와 안받고 하는 코드의 구분

테스트의 유무

테스트를 잘 작성하는 것만큼 중요한 것

코드를 잘 짜는 것 =

테스팅하기 좋은 코드를 짠다는 것

어떤 것이 더 좋은 코드일까?

  • [ ] 함수를 최대한 적게 만들고 하나의 함수에서 최대한 많은 일을 하도록 하는 것이 좋다
  • [ ] 함수를 최대한 여러개를 만들고 함수 단위로 최소한의 단위를 하도록 하는 것이 좋다

어떤 것이 더 좋은 코드일까?

  • 테스트 하면 => 코드를 짜게끔 해준다 => 좋은 코드란?
  • 코드간의 의존성이 적은. 독립적.
  • Isolated. 상대방에게 영향을 주지도 받지도 않는
  • Deterministic. 정의된. 1억번 함수 실행시키면 1억번 똑같이 실행되는 함수
  • 명료한. 함수 이름과 기능이 일대일 매치

React App에서의 유닛테스트

* 함수 혹은 클래스의 형태로 구성

Reducers

Actions, Action Creator

React.Components

JEST - FB에서 만든 Test Framework

npm run test // yarn test

Reducer부터 시작

Actions Creator 시작

Component는 다음 시간에

클래스라서 다소 복잡

* Render => 보여지는 것을 테스팅

* Component Did Mount 와 같은 생명 주기 핸들러

* 그외 로직

Intro to Jest

By Soh Paul

Intro to Jest

  • 220