
๋ฌด์ธ๊ฐ๋ฅผ ํ
์คํธํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ฉด, .not์ ์ฌ์ฉํ์ฌ ๊ทธ ๋ฐ๋๋ฅผ ํ
์คํธํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ฝ๋๋ ์ต๊ณ ์ ๋ง์ด ์ฝ์ฝ๋์ธ์ง ์๋์ง ํ
์คํธํ๋ค.
test('the best flavor is not coconut', () => {
expect(bestLaCroixFlavor()).not.toBe('coconut');
});
๋ค๋ฅธ ๋งค์ฒ๊ฐ ์ฐ๊ฒฐ๋ ์ ์๋๋ก .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๋ฅผ ์ฌ์ฉํ์ฌ 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