๐Ÿ–ฅFrontEnd

Jest ๊ธฐ๋ณธ ๊ณต๋ถ€ํ•˜๊ธฐ, ์‰ฝ๊ฒŒ Jest๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ต์Šคํ…์…˜ ์ถ”์ฒœ

hellohailie 2024. 9. 9. 00:18
๋ฐ˜์‘ํ˜•

 

์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€์ด๋‹ค. 

1. ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‹คํ–‰ํ•˜๊ธฐ

 

1. package.json์— npm script๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. 

{
	"script" : {
    	"test": "jest"
    }
}

 

2. ๋ช…๋ น์–ด "npm test" ๋˜๋Š” "npm test '๊ฒฝ๋กœ'"

 

2. ์ œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋กœ ์‹คํ–‰ํ•˜๊ธฐ

vscode ์ต์Šคํ…์…˜์ธ "์ œ์ŠคํŠธ ๋Ÿฌ๋„ˆ"๋ฅผ ๋‹ค์šด๋ฐ›์œผ๋ฉด ๊ฒฝ๋กœ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ์ชฝ๋งŒ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

ํ•จ์ˆ˜๋งˆ๋‹ค Run | Debug ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ํด๋ฆญ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner

 

Jest Runner - Visual Studio Marketplace

Extension for Visual Studio Code - Simple way to run or debug a single (or multiple) tests from context-menu

marketplace.visualstudio.com

 

 


test๋Š” 2๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. 

test("add: 1 + 2๋Š” 3", () => {
  expect(add(1, 2)).toBe(3);
});

 

test(ํ…Œ์ŠคํŠธ๋ช…, ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜)

 

ํ…Œ์ŠคํŠธํ•จ์ˆ˜๋Š” ๊ฒ€์ฆ๊ฐ’์ด ๊ธฐ๋Œ“๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค. 

expect(๊ฒ€์ฆ๊ฐ’).toBe(๊ธฐ๋Œ“๊ฐ’)

toBe(๊ธฐ๋Œ“๊ฐ’)

 

 


์—ฐ๊ด€์„ฑ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์‹ถ์„๋•Œ๋Š” describe ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

describe("add", () => {
  test("1 + 1์€ 2", () => {
    expect(add(1, 1)).toBe(2);
  });
  test("1 + 2๋Š” 3", () => {
    expect(add(1, 2)).toBe(3);
  });
});

 

 

test ํ•จ์ˆ˜๋Š” ์ค‘์ฒฉํ•  ์ˆ˜ ์—†๋Š”๋ฐ, decribe ํ•จ์ˆ˜๋Š” ์ค‘์ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

describe("์‚ฌ์น™์—ฐ์‚ฐ", () => {
  describe("add", () => {
    test("1 + 1์€ 2", () => {
      expect(add(1, 1)).toBe(2);
    });
    test("1 + 2๋Š” 3", () => {
      expect(add(1, 2)).toBe(3);
    });
  });
  describe("sub", () => {
    test("1 - 1์€ 0", () => {
      expect(sub(1, 1)).toBe(0);
    });
    test("2 - 1์€ 1", () => {
      expect(sub(2, 1)).toBe(1);
    });
  });
});

 

 


์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฒ€์ฆํ•˜๋ ค๋ฉด

expect(์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํ•จ์ˆ˜).toThrow();

 

๊ทผ๋ฐ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

 

test("์˜ฌ๋ฐ”๋ฅธ ๋‹จ์–ธ๋ฌธ ์ž‘์„ฑ๋ฒ•", () => {
  // ์ž˜๋ชป๋œ ์ž‘์„ฑ๋ฒ•
  expect(add(-10, 110)).toThrow();
  // ์˜ฌ๋ฐ”๋ฅธ ์ž‘์„ฑ๋ฒ•
  expect(() => add(-10, 110)).toThrow();
});

 

 

์˜๋„๋Œ€๋กœ ์˜ˆ์™ธ์‚ฌ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š”๊ฐ€์— ๋Œ€ํ•œ ๊ด€์ ์œผ๋กœ ๋‹ค๊ฐ€๊ฐ€๊ธฐ!

๋ฐ˜์‘ํ˜•