๐Ÿฆ_21.12.13 TIL

Boriยท2021๋…„ 12์›” 13์ผ
1
post-thumbnail

21๋…„ 12์›” 13์ผ

๐Ÿ“ Javascript

๐Ÿ“Ž TDD(Test Driven Development)_2

TDD.spec.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="shortcut icon"
      type="image/png"
      href="jasmine/lib/jasmine-3.10.1/jasmine_favicon.png"
    />
    <link rel="stylesheet" href="jasmine/lib/jasmine-3.10.1/jasmine.css" />

    <script src="jasmine/lib/jasmine-3.10.1/jasmine.js"></script>
    <script src="jasmine/lib/jasmine-3.10.1/jasmine-html.js"></script>
    <script src="jasmine/lib/jasmine-3.10.1/boot0.js"></script>
    <!-- optional: include a file here that configures the Jasmine env -->
    <script src="jasmine/lib/jasmine-3.10.1/boot1.js"></script>
  </head>
  <body>
    <script src="tddTest.js"></script>
    <script src="tddTest.spec.js"></script>
  </body>
</html>

tddTest.spec.js

// ์›๋ณธ js๋ฅผ ํ…Œ์ŠคํŠธํ•  ํ…Œ์ŠคํŠธ ํŒŒ์ผ

// describe : ํ…Œ์ŠคํŠธ ์œ ๋‹›๋“ค์˜ ๋ชจ์Œ(์ž์Šค๋ฏผ์—์„œ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜)
// ์ด ์œ ๋‹› ๋ชจ์Œ์— ๋Œ€ํ•œ ์ด๋ฆ„์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
// html์— ๋น„์œ ํ•˜๋ฉด section๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
// ๊ฐ๊ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์•ž์— ์ž‘์„ฑํ•œ๋‹ค => "์ž์Šค๋ฏผ ํ…Œ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค."
describe("์ž์Šค๋ฏผ ํ…Œ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค.", () => {
  // it = ํ…Œ์ŠคํŠธ ์œ ๋‹›
  it("๋ง์…ˆ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.", () => {
    let num = 10;

    // expect : ์‹คํ–‰ํ•  ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ ํ•œ๋‹ค. = ๊ธฐ๋Œ€์‹
    // plusOne ์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅด ์•„์ง ๋งŒ๋“ค์ง€ ์•Š์•˜์ง€๋งŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •
    // toBe : ๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜
    // plusOne ํ•จ์ˆ˜๋Š” 1์„ ๋”ํ•˜๋Š” ํ•จ์ˆ˜์ด๋ฏ€๋กœ toBe์•ˆ์— ๊ทธ ๊ธฐ๋Œ“๊ฐ’์ธ 11์„ ์ž‘์„ฑ
    // ์ด ํ›„ 11์ด๋ผ๊ณ  ์ž‘์„ฑํ–ˆ๋˜ ๊ณ ์ •๊ฐ’์„ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊ฟ”์„œ ๋„ฃ๊ธฐ
    // ๋‹ค๋ฅธ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋„ ํ…Œ์ŠคํŠธ์— ์„ฑ๊ณตํ•˜๋Š”์ง€ ํ™•์ธ
    expect(plusOne(num)).toBe(num + 1);
  });
});

// .spec.js๋Š” ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ
// ํŒŒ์ผ๋ช…์ด ๋ฐ˜๋“œ์‹œ ๊ฐ™์•„์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ๊ฐ™์œผ๋ฉด ์ดํ•ดํ•˜๊ธฐ ์ข‹๋‹ค.
// ์‹ค๋ฌด์—์„œ ์ด ํŒŒ์ผ์€ ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š”๋‹ค => ํ…Œ์ŠคํŠธ์šฉ์ด๋ฏ€๋กœ!

tddTest.js

// ์›๋ณธ js ํŒŒ์ผ

// ํ…Œ์ŠคํŠธ์— ํ†ต๊ณผํ•œ ํŒŒ์ผ ๋ฐฐํฌ
function plusOne(num) {
  return num + 1;
}

TDD.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
  <!-- ํ…Œ์ŠคํŠธ ํ†ต๊ณผํ•œ ํŒŒ์ผ๋งŒ ๋ฐฐํฌ -->
  <script src="tddTest.js"></script>
</body>
</html>

TDD์˜ ์žฅ์ 

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์—ญํ• ์„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋Œ€์‹  ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ธฐ๋Šฅ์˜ ๊ตฌ๋™์„ ๋ณด์žฅ
    => ์ฝ”๋“œ๋ฅผ ์•ˆ์ •์ ์ด๊ณ  ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋†’์€ ๋ถ„์„์„ ์š”๊ตฌ
    => ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ํ’ˆ์งˆ์„ ์šฐ์„ ํ•˜๋Š” ์‚ฌ๊ณ ๋ฅผ ํ•˜๊ฒŒ๋œ๋‹ค.

TDD ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•˜๊ณ  ์ด๋Š” ๊ณง ์—…๋ฌด์— ๋Œ€ํ•œ ๋ถ€๋‹ด์œผ๋กœ ์ž‘์šฉ
    => ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ธ‰๋ฐ•ํ•˜๋‹ค๋ฉด TDD๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹๋‹ค.
    => ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ํŒ๋‹จ
  • TDD๊ฐ€ ๋ชจ๋“  ์˜ˆ์™ธ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    => ๊ฒฐ๊ตญ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ด ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ๋†“์น  ์ˆ˜ ์žˆ๋‹ค.
    => ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ์ง€ํ–ฅํ•˜์ง€๋งŒ ์™„๋ฒฝํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๐Ÿ“ ํ”„๋กœ์ ํŠธ ํŒ€์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ (14:00 ~ 16:00)

๐Ÿ“ ์˜จ๋ผ์ธ ๊ฐ•์˜ ์ˆ˜๊ฐ•

๐Ÿ“Ž ์ฝ”๋“œ๋ผ์ด์–ธ - ์ผ๋‹จ ๋งŒ๋“œ๋Š” Javascript


๋งˆ๋ฌด๋ฆฌ

  • ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ๋˜ TDD ์ฝ”๋“œ๋Š” ๊ดœ์ฐฎ์•˜๋Š”๋ฐ ์˜ค๋Š˜์€ '์ด๊ฒŒ ๋ญ˜ ํ…Œ์ŠคํŠธ ํ•˜๋”๋ผ์•„~' ํ•˜๋ฉด์„œ ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ ๋ฐ”๋นด๋‹ค.
    => ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ผผ๊ผผํžˆ ์ฝ์–ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!
  • ํ…Œ์ŠคํŠธ๋ผ๋‹ˆ.. ํ…Œ์ŠคํŠธ๋ผ๋‹ˆ..!!
    => ์–ด์ฐŒ์–ด์ฐŒ ํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฏฟ์„ ์ˆ˜ ์—†๊ตฌ๋งŒ
  • ์ฐธ์—ฌ ์ค‘์ธ ์Šคํ„ฐ๋””์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ํŒ€์„ ๋‚˜๋ˆด๋‹ค
    => ์š”๊ฑฐ ์ž˜ํ•ด์„œ ์ˆ˜์—…์—์„œ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋„ ์ž˜ ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค์•„
    => ํŒ€์ด๋ฆ„์„ ๋‚ด๊ฐ€ ์ง€์—ˆ๋Š”๋ฐ ๋ฉ‹์ง€๊ฒŒ ์ง“๋Š” ๋Šฅ๋ ฅ์€ ์—†๋Š” ๋“ฏ! "๋ˆ„๊ฐ€๋”์—‰๋ง์ง„์ฐฝ์ด์กฐ"
  • ๋ฆฌ์•กํŠธ ์ด์ž์‹ ๊ฐ€๋งŒ๋‘์ง€ ์•Š๊ฒ ๋‹ค
  • ๊ฒฐ๊ตญ ํ”„๋กœํฌ๋ฆฌ์—์ดํŠธ ๊ฒฐ์ œ๐Ÿฅณ
    => ๋„ˆ๋ฌด ์ข‹์ž–์•„์•„์•„! ์˜ˆ์—์—์—์—

0๊ฐœ์˜ ๋Œ“๊ธ€