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();
});
|