TIL_20.07.21 πŸƒπŸ½β€β™‚οΈπŸƒπŸ½β€β™‚οΈ

Doum KimΒ·2020λ…„ 7μ›” 21일
0

TIL

λͺ©λ‘ 보기
14/71
post-thumbnail

Codestates immersive course


Linting & Testing

μ½”λ“œμ˜ μ§ˆμ„ νŒλ‹¨ν•  λ•Œ 크게 3가지 μš”μΈμœΌλ‘œ 확인할 수 μžˆλ‹€.

  1. 우리의 μ˜λ„μ— 맞게 μ½”λ“œκ°€ λ™μž‘μ„ ν•˜λŠ”κ°€?
  2. μž‘μ„±ν•œ μ½”λ“œμ— 문제, 결함이 μ—†λŠ”κ°€?
  3. μž‘μ„±ν•œ μ½”λ“œκ°€ 읽기 쉽고 μœ μ§€λ³΄μˆ˜μ— μš©μ΄ν•œκ°€?

μ½”λ“œμ˜ μ§ˆμ„ ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄μ„œλŠ” Lintingκ³Ό Testing을 μ΄μš©ν•  수 μžˆλ‹€.

Testing

Testingμ΄λž€ μ½”λ“œμ˜ λ™μž‘ 및 결함을 ν™•μΈν•˜λŠ” 단계이닀. λ°©λ²•μ—λŠ” 크게 3가지가 μžˆλ‹€.

  1. End to end test
  2. Integration test
  3. Unit test

μ•žμ„œ Unit testλŠ” TDDλ₯Ό μ •λ¦¬ν•˜λ©΄μ„œ μ•Œμ•„λ΄€μœΌλ‹ˆ λ‚˜λ¨Έμ§€μ— 2가지 방법에 λŒ€ν•΄ κ°„λ‹¨νžˆ μ•Œμ•„λ³΄μž.
TDD 정리 κΈ€


End to end test(E2E test)

쒅단(Endpoint)κ°„ ν…ŒμŠ€νŠΈλ‘œ μ‚¬μš©μžμ˜ μž…μž₯μ—μ„œ ν…ŒμŠ€νŠΈ ν•˜λŠ” 것. web,appμ—μ„œ GUIλ₯Ό ν†΅ν•΄μ„œ μ‹œλ‚˜λ¦¬μ˜€, κΈ°λŠ₯ ν…ŒμŠ€νŠΈ 등을 μˆ˜ν–‰ν•œλ‹€. μ‚¬μš©μžμ—κ²Œ 직접 λ…ΈμΆœλ˜λŠ” 뢀뢄을 μ κ²€ν•œλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

Integration test(톡합 test)

μœ λ‹› ν…ŒμŠ€νŠΈκ°€ λλ‚œ λͺ¨λ“ˆμ„ ν†΅ν•©ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό μ°ΎλŠ” ν…ŒμŠ€νŠΈμ΄λ‹€. λͺ¨λ“ˆ κ°„μ˜ μƒν˜Έμž‘μš©μ΄ μ •μƒμ μœΌλ‘œ μˆ˜ν–‰λ˜λŠ”κ°€ ν…ŒμŠ€νŠΈ ν•œλ‹€.


이번 μŠ€ν”„λ¦°νŠΈμ—μ„œλŠ” Unit testλ₯Ό μ΄μš©ν•΄μ„œ testing을 μ§„ν–‰ν•œλ‹€.
jest tool을 μ‚¬μš©ν•  것이며 jest μ‚¬μš© 방법을 κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬ν•΄λ³΄μž.
jestjs.io

install

npm i jest -D

unit.js

function ν•¨μˆ˜λͺ…(a, b) {
  return a + b;
}
module.exports = ν•¨μˆ˜λͺ…;

unit.test.js

const μœ λ‹› = require('./unit.js');

test('adds 1 + 2 to equal 3', () => {
  expect(μœ λ‹›(1, 2)).toBe(3);
});

package.json

{
  "scripts": {
    "test": "jest"
  }
}

test

npm run test

Linting

μ§€μ •ν•œ μ½”λ“œ μŠ€νƒ€μΌμ„ μ§€ν‚€λŠ”μ§€ μ²΄ν¬ν•΄μ£ΌλŠ” 도ꡬ이닀. ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ 일관성 μžˆλŠ” μ½”λ“œ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜κ²Œ 도와쀀닀.

μ½”λ“œ νŒŒμ•… 용이, 였λ₯˜ 발견이 μ‰¬μ›Œμ§€λŠ” μž₯점이 μžˆλ‹€.

μ‚¬μš©λ°©λ²•μ€

  1. IDE extension
  2. git hooks
  3. ν…ŒμŠ€νŠΈλ₯Ό ν†΅ν•œ lint

μŠ€ν”„λ¦°νŠΈ λ‚΄μ—μ„œλŠ” ESLintλ₯Ό μ‚¬μš©ν•œλ‹€. ESLint

npm i eslint -D
npx eslint --init  (.eslintrc.{js,yml,json} 생성)

.eslintrc.json μ—μ„œ κ·œμΉ™ μΆ”κ°€

{
  "extends": "eslint:recommended",
  "rules": {
    "semi": ["error", "always"],
    "quotes": ["error", "double"]
  }
}

Lesson Pre Course Review

이번 λ ˆμŠ¨μ—λŠ” pre μ½”μŠ€μ—μ„œ λ‹€λ€˜λ˜ λ‚΄μš© 쀑에 this 바인딩에 λŒ€ν•œ λ‚΄μš©μ΄ λ‹€λ€„μ‘Œλ‹€.
thisκ°€ 상황에 따라 μ–΄λ–»κ²Œ 바인딩 λ˜λŠ”μ§€ λ°”λ‘œ λ°”λ‘œ 닡이 λ‚˜μ˜€μ§€ μ•Šμ•˜κ³  볡슡이 λ‹€μ‹œ ν•„μš”ν•˜λ‹€κ³  μƒκ°ν•΄μ Έμ„œ 정리λ₯Ό ν•΄λ΄€λ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ μ»¨ν…μŠ€νŠΈ 바인딩 (this)

0개의 λŒ“κΈ€