μ½λμ μ§μ νλ¨ν λ ν¬κ² 3κ°μ§ μμΈμΌλ‘ νμΈν μ μλ€.
μ½λμ μ§μ ν₯μμν€κΈ° μν΄μλ Lintingκ³Ό Testingμ μ΄μ©ν μ μλ€.
Testingμ΄λ μ½λμ λμ λ° κ²°ν¨μ νμΈνλ λ¨κ³μ΄λ€. λ°©λ²μλ ν¬κ² 3κ°μ§κ° μλ€.
μμ Unit testλ TDDλ₯Ό μ 리νλ©΄μ μμλ΄€μΌλ λλ¨Έμ§μ 2κ°μ§ λ°©λ²μ λν΄ κ°λ¨ν μμ보μ.
TDD μ 리 κΈ
μ’ λ¨(Endpoint)κ° ν μ€νΈλ‘ μ¬μ©μμ μ μ₯μμ ν μ€νΈ νλ κ². web,appμμ GUIλ₯Ό ν΅ν΄μ μλ리μ€, κΈ°λ₯ ν μ€νΈ λ±μ μννλ€. μ¬μ©μμκ² μ§μ λ ΈμΆλλ λΆλΆμ μ κ²νλ€κ³ μκ°νλ©΄ λλ€.
μ λ ν μ€νΈκ° λλ λͺ¨λμ ν΅ν©νλ κ³Όμ μμ λ°μν μ μλ μ€λ₯λ₯Ό μ°Ύλ ν μ€νΈμ΄λ€. λͺ¨λ κ°μ μνΈμμ©μ΄ μ μμ μΌλ‘ μνλλκ° ν μ€νΈ νλ€.
μ΄λ² μ€νλ¦°νΈμμλ 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
μ§μ ν μ½λ μ€νμΌμ μ§ν€λμ§ μ²΄ν¬ν΄μ£Όλ λꡬμ΄λ€. νλ‘μ νΈ λ΄μμ μΌκ΄μ± μλ μ½λ μ€νμΌμ μ μ§νκ² λμμ€λ€.
μ½λ νμ μ©μ΄, μ€λ₯ λ°κ²¬μ΄ μ¬μμ§λ μ₯μ μ΄ μλ€.
μ¬μ©λ°©λ²μ
μ€νλ¦°νΈ λ΄μμλ 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"]
}
}
μ΄λ² λ μ¨μλ pre μ½μ€μμ λ€λ€λ λ΄μ© μ€μ this λ°μΈλ©μ λν λ΄μ©μ΄ λ€λ€μ‘λ€.
thisκ° μν©μ λ°λΌ μ΄λ»κ² λ°μΈλ© λλμ§ λ°λ‘ λ°λ‘ λ΅μ΄ λμ€μ§ μμκ³ λ³΅μ΅μ΄ λ€μ νμνλ€κ³ μκ°ν΄μ Έμ μ 리λ₯Ό ν΄λ΄€λ€.