Nov 17, 2021 2021-11-17T08:26:00+09:00 by Hoya
Updated Apr 16 2022-04-16T09:14:18+09:00 2 min
테스트 패턴
1
2
3
| test("테스트 설명", () => {
expect("검증 대상").toXX("기대 결과");
});
|
1
2
3
4
5
6
| function getUser(id) {
return {
id,
email: `user${id}@test.com`,
};
}
|
위에서 사용한 toBe함수를 이용 할 경우 아래와 같이 테스트가 실패하는것을 알 수 있습니다.
1
2
3
4
5
6
| test("return a user object", () => {
expect(getUser(1)).toBe({
id:1,
email: `user1@test.com`,
})
});
|
Jest는 객체(object)를 검증할때에는 toBe() 대신에 toEqual()함수를 이용 할 것을 가이드 해주고 있습니다. 실제로 테스트 코드를 작성할 때는 객체를 검증해야할 일이 많기 때문에 toEqual()함수를 가장 많이 접할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| expect(received).toBe(expected) // Object.is equality
If it should pass with deep equality, replace "toBe" with "toStrictEqual"
Expected: {"email": "user1@test.com", "id": 1}
Received: serializes to the same string
11 |
12 | test("return a user object", () => {
> 13 | expect(getUser(1)).toBe({
| ^
14 | id: 1,
15 | email: `user1@test.com`,
16 | });
|
toBeTruthy, toBeFalsy
toEqual()함수 다음으로 많이 사용되는 Matcher 함수는 아마도 toBeTruthy()와toBeFalsy()일 것입니다. 많은 분들이 아시다시피 느슨한 타입 기반 언어인 js는 java와 같이 강한 타입 기반 언어처럼 true와 false가 boolean타입에 한정되지 않습니다. 따라서 숫자 1이 true로 간주되고, 숫자0이 false로 간주되는 것과 같이 모든 타입의 값들을 true아니면false로 간주하는 규칙이 있습니다. toBeTruthy()는 검증 대상이 이 규칙에 따라 true로 간주되면 테스트 통과이고, toBeFalsy는 반대로 false로 간주되는 경우 테스트가 통과됩니다.
1
2
3
4
| test("number 0 is falsy but string 0 is truthy", () => {
expect(0).toBeFalsy();
expect("0").toBeTruthy();
});
|