[JEST ์ž…๋ฌธํ•˜๊ธฐ 4] ๐Ÿ”งModifiers๐Ÿ”ง

Jerryยท2023๋…„ 8์›” 8์ผ

Jest

๋ชฉ๋ก ๋ณด๊ธฐ
4/10
post-thumbnail

๐Ÿ”ง Modifiers


.not

๋ฌด์–ธ๊ฐ€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, .not์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ๋ฐ˜๋Œ€๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ตœ๊ณ ์˜ ๋ง›์ด ์ฝ”์ฝ”๋„›์ธ์ง€ ์•„๋‹Œ์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

test('the best flavor is not coconut', () => {
  expect(bestLaCroixFlavor()).not.toBe('coconut');
});

.resolves

๋‹ค๋ฅธ ๋งค์ฒ˜๊ฐ€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก .resolves๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ fulfilled ์ƒํƒœ์ธ ํ”„๋กœ๋ฏธ์Šค์˜ ๊ฐ’์„ ์–ธ๋ž˜ํ•‘ํ•œ๋‹ค. ๋งŒ์•ฝ rejected ์ƒํƒœ์ธ ํ”„๋กœ๋ฏธ์Šค์˜ ๊ฒฝ์šฐ ์–ด์„ค์…˜์€ ์‹คํŒจํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ๋Š” ํ”„๋กœ๋ฏธ์Šค๊ฐ€ resolve ๋˜๊ณ  ๊ฒฐ๊ณผ ๊ฐ’์ด 'lemon'์ธ์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

test('resolves to lemon', () => {
  // make sure to add a return statement
  return expect(Promise.resolve('lemon')).resolves.toBe('lemon');
});

โ“˜ NOTE
์—ฌ์ „ํžˆ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋Š” ๋น„๋™๊ธฐ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ ์–ธ๋ž˜ํ•‘๋œ assertion์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ Jest์—๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋ผ๊ณ  ์ง€์‹œํ•ด์•ผ ํ•œ๋‹ค.
[JEST ์ž…๋ฌธํ•˜๊ธฐ 4] ๐Ÿ”งTesting Asynchronous Code๐Ÿ”ง
๋˜๋Š” .resolves์™€ ํ•จ๊ป˜ async/await๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

test('resolves to lemon', async () => {
  await expect(Promise.resolve('lemon')).resolves.toBe('lemon');
  await expect(Promise.resolve('lemon')).resolves.not.toBe('octopus');
});

.rejects

.rejects๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ rejected ์ƒํƒœ์ธ ํ”„๋กœ๋ฏธ์Šค์˜ ์ด์œ ๋ฅผ ์–ธ๋ž˜ํ•‘ํ•ด์„œ ๋‹ค๋ฅธ ๋งค์ฒ˜๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ํ”„๋กœ๋ฏธ์Šค๊ฐ€ fulfilled ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์–ด์„ค์…˜์€ ์‹คํŒจํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์ฝ”๋“œ๋Š” 'octopus'๋ผ๋Š” ์ด์œ ๋กœ ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ๊ฑฐ๋ถ€๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

test('rejects to octopus', () => {
  // make sure to add a return statement
  return expect(Promise.reject(new Error('octopus'))).rejects.toThrow(
    'octopus',
  );
});

โ“˜ NOTE
์—ฌ์ „ํžˆ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋Š” ๋น„๋™๊ธฐ์‹์ด๋‹ค. ๋”ฐ๋ผ์„œ ์–ธ๋ž˜ํ•‘๋œ ์–ด์„ค์…˜์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ Jest์—๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋ผ๊ณ  ์ง€์‹œํ•ด์•ผ ํ•œ๋‹ค.
[JEST ์ž…๋ฌธํ•˜๊ธฐ 4] ๐Ÿ”งTesting Asynchronous Code๐Ÿ”ง
๋˜๋Š” .rejects์™€ ํ•จ๊ป˜ async/awiat๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

test('rejects to octopus', async () => {
  await expect(Promise.reject(new Error('octopus'))).rejects.toThrow('octopus');
});

์ด ๊ธ€์€ ์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿ™‚
https://jestjs.io/docs/expect#modifiers

profile
I'm jerry

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