4. Testing Library

Keyword

  1. Jest

  2. Describe-Context-It ํŒจํ„ด

  3. React Testing Library

1. Jest

JavaScript Testing Framework JS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด ์ฝ”๋“œ ์•ˆ์ •์„ฑ๊ณผ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

  • expect๋กœ ํ…Œ์ŠคํŠธ ํ•  ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๊ณ  matcher๋กœ ์˜ˆ์ƒ ๊ฒฐ๊ณผ์™€ ์‹ค์ œ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

  • callback, promise, async/await ๋น„๋™๊ธฐ ์ฝ”๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ชจ๋“ˆ, ํ•จ์ˆ˜๋‚˜ ๊ฐ์ฒด๋“ฑ์„ mockingํ•˜์—ฌ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

// sum.js
function sum(a, b) {
  return a + b;
}

module.exports = sum;

// sum.test.js
describe('sum ํ•จ์ˆ˜', () => {
  it('๋‘ ์ˆ˜๋ฅผ ๋”ํ•œ๋‹ค.', () => {
    const res ult = sum(2, 3);
    expect(result).toBe(5);
  });

  it('์Œ์ˆ˜๋ฅผ ๋”ํ•œ๋‹ค.', () => {
    const result = sum(-2, -3);
    expect(result).toBe(-5);
  });
});

Jest๋Š” ๋ณดํ†ต (describe, it) ์Œ์œผ๋กœ ์ž‘์„ฑ

  • describe - ํ…Œ์ŠคํŠธ ๊ทธ๋ฃนํ™”

  • it - ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

SWC(Super-fast Web Compiler)

Jest๋Š” JSํŒŒ์ผ ํ…Œ์ŠคํŠธ๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ, SWC๋ฅผ ์‚ฌ์šฉํ•ด TS๋ฅผ JS๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

  • Javascript์™€ Typescript ์ฝ”๋“œ ์ปดํŒŒ์ผ๋Ÿฌ

  • JS์˜ ES6+ ๋ฌธ๋ฒ•์„ ES5๋ฌธ๋ฒ•์œผ๋กœ ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง

  • TS -> JS ์ปดํŒŒ์ผ๋ง


2. Describe-Context-It ํŒจํ„ด

ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ตฌ์„ฑ ํŒจํ„ด

  • Describe - ์„ค๋ช…ํ•  ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์„ ๋ช…์‹œํ•œ๋‹ค.

  • Context - ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ด ๋†“์ธ ์ƒํ™ฉ์„ ์„ค๋ช…ํ•œ๋‹ค.

  • It - ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ํ–‰๋™์„ ์„ค๋ช…ํ•œ๋‹ค.

ํ•œ๊ตญ์–ด๋กœ ํ…Œ์ŠคํŠธ ์„ค๋ช… ์ž‘์„ฑ (์ฐธ์กฐ ๋งํฌ)

  • Describe - ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์„ ๋ช…์‚ฌ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • Context๋Š” - ~์ธ ๊ฒฝ์šฐ, ~ํ•  ๋•Œ, ๋งŒ์•ฝ ~ ํ•˜๋‹ค๋ฉด ๊ณผ ๊ฐ™์ด ์ƒํ™ฉ ๋˜๋Š” ์กฐ๊ฑด์„ ๊ธฐ์ˆ ํ•œ๋‹ค.

  • it - ๋ช…์‚ฌ๋กœ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ํ–‰๋™์„ ์ž‘์„ฑํ•œ๋‹ค

    • ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์˜ ํ–‰๋™์€ ~์ด๋‹ค, ~ํ•œ๋‹ค, ~๋ฅผ ๊ฐ–๋Š”๋‹ค๊ฐ€ ์ ์ ˆํ•œ๋‹ค.

    • ~๋œ๋‹ค ๊ฐ™์€ ์ˆ˜๋™ํ˜• ํ‘œํ˜„์€ ์ข‹์ง€ ์•Š๋‹ค.


3. React Testing Library

React ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ๋กœ Jest์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.

  • E2E Test์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ์˜ ๋™์ž‘์„ ํ…Œ์ŠคํŠธ (์‚ฌ์šฉ์ž ์ค‘์‹ฌ์  ํ…Œ์ŠคํŠธ)

  • ๋‹ค๋งŒ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ํ…Œ์ŠคํŠธ๋งŒ ํ•˜๋Š” ์ƒํ™ฉ์€ ์ง€์–‘ํ•˜์ž

    • ๋„ˆ๋ฌด ๋งŽ์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ์ธํ•ด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.


ํ‚ค์›Œ๋“œ ์ถ”๊ฐ€ ์ •๋ฆฌ

  • TDD

  • BDD

  • E2E (End To End)

Last updated