4. Testing Library

Jest

๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–์ถ˜ ํ…Œ์ŠคํŒ… ๋„๊ตฌ.

Mocha์™€ Chai์ฒ˜๋Ÿผ RSpec์˜ describe-it์„ ์ง€์›ํ•˜๊ณ , expect๋กœ ๋‹จ์–ธ(assertion)ํ•  ์ˆ˜ ์žˆ๋‹ค.

Mocking๋„ ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

test('add', () => {
  expect(add(1, 2)).toBe(3);
});

BDD ์Šคํƒ€์ผ์˜ ํ…Œ์ŠคํŠธ์ฝ”๋“œ

describe('add', () => {
  it('returns sum of two numbers', () => {
    expect(add(1, 2)).toBe(3);
  });
});

Given-When-Then

์˜๋„ํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ์ผ์ด ๋ฒŒ์–ด์กŒ์„ ๋•Œ, ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๋ช…์„ธ์™€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ๋ช…์„ธ๊ฐ€ ๋ถˆ์™„์ „ํ•ด์„œ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ๋ช…์„ธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ๊ฑธ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฑด ์‰ฝ๋‹ค.

๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

์ „์ž๋ Œ์ง€์— 3๋ถ„๋งŒ ๋Œ๋ฆฌ๋ฉด ์™„์„ฑ!

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•˜๋Š” ๊ฑด ๋ญ”๊ฐ€์š”?

์ „์ž๋ Œ์ง€์— 3๋ถ„๋งŒ ๋Œ๋ฆฌ๋ฉด

๊ทธ๋Ÿผ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€์ฃ ?

์™„์„ฑ!

ruby๋กœ ๋œ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ

# When
food = cook(3.minutes)

# Then
assert food.complete?`

์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ ์ „์ž๋ Œ์ง€๋ฅผ ๋จผ์ € ์ค€๋น„ํ•ด์•ผํ•จ

700W ์ „์ž๋ Œ์ง€๋ฅผ ์ค€๋น„ํ•ด์„œ 3๋ถ„๋งŒ ๋Œ๋ฆฌ๋ฉด ์™„์„ฑ!

๋ชจํ˜ธํ•จ์ด ํ•˜๋‚˜ ์ค„์–ด๋“ค์—ˆ๋‹ค.

# Given
stove = Stove.new(700.watts)

# When
food = stove.cook(3.minutes)

# Then
assert food.complete?`

์ƒํ™ฉ์„ ๋” ๋ˆˆ์— ๋„๊ฒŒ

Given - 700์™€ํŠธ ์ „์ž๋ Œ์ง€๋ฅผ ์ค€๋น„ํ•˜๊ณ , 3๋ถ„์ด๋ž€ ์‹œ๊ฐ„์ด ์ฃผ์–ด์กŒ์„ ๋•ŒWhen - ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ์ „์ž๋ Œ์ง€๋ฅผ ๋Œ๋ฆฌ๋ฉดThen - ์š”๋ฆฌ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

# Given
power = 700.watts
time = 3.minutes
stove = Stove.new(power)

# When
food = stove.cook(time)

# Then
assert food.complete?`

ํƒœ์„ธ ์ „ํ™˜

๋งŒ์•ฝ 1๋ถ„๋งŒ ๋Œ๋ฆฌ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์™„์„ฑ ์•ˆ๋œ๋‹ค. 5๋ถ„ ๋Œ๋ฆฌ๋ฉด? ํƒ„๋‹ค.

์ •๋ฆฌํ•˜๋ฉฐ

ํ•˜๋ ค๋Š” ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€๊ฐ€ ๊ด€๊ฑด.

Given-When-Then ๊ฐœ๋…์„ ์ด์šฉํ•ด ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค.

์ฝ”๋”ฉ์„ ํ•˜๊ธฐ์ „์—

๋‚ด๊ฐ€ ํ•œ ์ผ ์ฆ๋ช…ํ•˜๊ธฐ

React Testing Library

React Testing Library ๊ณต์‹๋ฌธ์„œ

jest-dom

์‹ค์Šต

UI ํ…Œ์ŠคํŠธ์— ํŠนํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๊ฑฐ์˜ E2E Test์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์“ฐ๋“ฏ์ด ํ…Œ์ŠคํŠธ.

โ€œF/E ํ…Œ์ŠคํŠธ = only React ์ปดํฌ๋„ŒํŠธ ํ…Œ์ŠคํŠธโ€๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์€ ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

ํ™”๋ฉด์„ ๊ฒ€์‚ฌํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š”๊ฒŒ ๋‚˜์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋ทฐ๋งŒ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ข‹์€ ๊ฑด ์•„๋‹ˆ๋‹ค.

๋ณธ์งˆ์— ์ง‘์ค‘ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค.

์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ž‘์„ฑํ•˜๋ฉด ์˜คํžˆ๋ ค ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ๋„ ํ…Œ์ŠคํŠธ ํ•ด์•ผ ํ•˜๋‚˜?

Mocking ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ด ์–ด๋ ต๋‹ค๋ฉด

Last updated