Jest는 다른 방법으로 값을 테스트 하도록 natcher라는 것을 사용한다.
matcher란 ‘이거 맞아?’ 라고 물어보는 메서드라고 보면 된다. 기대한 값이 실제 반환된 값과 일치하는 지를 확인하는 작업을 일컫는다.
객체가 일치한 지 검증.
왠만한 일치를 비교하려 할 때 이 메소드를 사용하자.
const { getUser } = require('user'); // 테스트할 함수를 가져온다.
test("return a user object", () => {
// getUser(1)의 리턴 결과값이 { 객체 } 값이 같은 경우 true
expect(getUser(1)).toEqual({
id: 1,
email: `[email protected]`,
});
});
정말 단순한 값 비교. (문자열이나, 숫자형에 사용하자)
Don't use .toBe
with floating-point numbers. For example, due to rounding, in JavaScript 0.2 + 0.1
is not strictly equal to 0.3
.
소수점일때는 사용하지 말자.(소숫점의 경우는 .toBeCloseTo
를 사용하자)
또한 toBe는 obj가 같은 객체를 가리키고 있는지 확인한다.
test('toBe는 obj가 같은 객체를 가리키고 있는지 확인한다', () => {
const obj = {};
expect(obj).toBe(obj); // true
});
test('객체의 내용이 같더라도 서로 다른 메모리에 있는 객체이기 때문에 toBe를 쓰면 false가 나온다.', () => {
expect({ name: 'John' }).toBe({ name: 'John' }); // false
});
test('대신에 객체의 내용이 같은지를 확인하려면 toEqual을 써야 한다', () => {
const obj = {};
expect({ name: 'John' }).toEqual({ name: 'John' }); // true
});
따라서, 왠만하면 toEqual를 쓰자.