npm i -D jest
"scripts": {
"test": "jest"
},
npm test
라고 치면 jest가 실행 되어 테스트를 해볼 수 있다.
Jest는 기본적으로 test.js
로 끝나거나, __test__
디렉토리 안에 있는 파일들은 모두 테스트 파일로 인식한다. 만약 특정 테스트 파일만 실행하고 싶은 경우에는 npm test <파일명 이나 경로>
를 입력하면 된다.
test("1 is 1", () => {
expect(1).toBe(1)
})
describe('describe is nested test', () => {
beforeAll(() => {
...
});
afterAll(() => {
...
});
test("1 is 1", () => {
expect(1).toBe(1)
})
test('** fucntion test', (done) => {
...
});
});
<예시>
직접 VSCODE에서 쳐보며 결과값을 확인해보자.
test("1 is 1", () => {
expect(1).toBe(1);
});
function getUser(id) {
if (id <= 0) throw new Error("Invalid ID");
return {
id,
email: `user${id}@test.com`
};
}
test("return a user object", () => {
expect(getUser(1)).toEqual({
id: 1,
email: `user1@test.com`
});
});
test("number 0 is falsy but string 0 is truthy", () => {
expect(0).toBeFalsy();
expect("0").toBeTruthy();
});
test("array", () => {
const colors = ["Red", "Yellow", "Blue"];
expect(colors).toHaveLength(3);
expect(colors).toContain("Yellow");
expect(colors).not.toContain("Green");
});
test("string", () => {
expect(getUser(1).email).toBe("user1@test.com");
expect(getUser(2).email).toMatch(/.*test.com$/);
});
test("throw when id is non negative", () => {
expect(() => getUser(-1).toThrow());
expect(() => getUser(-1).toThrow("Invalid ID"));
});
function fetchUser(id, cb) {
setTimeout(() => {
console.log("wait 0.1 sec.");
const user = {
id: id,
name: "User" + id,
email: id + "@test.com"
};
cb(user);
}, 100);
}
//done 이용시 비동기처럼 테스트 할 수 있다.
test("fetch a user", done => {
fetchUser(1, user => {
expect(user).toEqual({
id: 1,
name: "User1",
email: "1@test.com"
});
done();
});
});
function fetchUser(id) {
return new Promise(resolve => {
setTimeout(() => {
console.log("wait 0.1 sec.");
const user = {
id: id,
name: "User" + id,
email: id + "@test.com"
};
resolve(user);
}, 100);
});
}
test("fetch a user", () => {
return fetchUser(1).then(user => {
expect(user).toEqual({
id: 1,
name: "User1",
email: "1@test.com"
});
});
});
test("fetch a user", async () => {
const user = await fetchUser(1);
expect(user).toEqual({
id: 1,
name: "User1",
email: "1@test.com"
});
});
<참고사이트>(https://www.daleseo.com/jest-basic/)