공식문서를 보고 그때그때 필요한 문법을 찾아 예제를 적으며 공부합니다.
Globals · Jest
In your test files, Jest puts each of these methods and objects into the global environment. You don't have to require or import anything to use them. However, if you prefer explicit imports, you can do import {describe, expect, test} from '@jest/globals'.
jestjs.io
expect()
expect(값).toBe(비교할 값)
- Object.is(값, 비교할 값) 과 같다
- Object.is() 란?
Object.is === 양쪽의 타입이 다를 경우 false false -0과 +0 false true Number.NaN과 NaN true false NaN과 0/0 true false 객체 비교 참조 비교 참조 비교
expect(calculator.sum()).toBe(6);
expect(객체).toEqual(비교할 객체)
toBe는 객체의 참조값을 비교하지만, toEqual은 모든 필드를 순회하며 값을 비교한다.
test("object assignment", () => {
const data = { one: 1 };
data.two = 2;
expect(data).toEqual({ one: 1, two: 2 }); // pass
});
test("object assignment", () => {
const data = { one: 1 };
data.two = 2;
expect(data).toBe({ one: 1, two: 2 }); // fail
});
expect(모의함수).toHaveBeenCalledWith(인수)
모의 함수가 특정 인수로 호출되었는지 확인한다.
expect(코드).toThrow(error?)
- error 로 들어갈 수 있는 것
- regular expression - 에러메시지 패턴과 일치하는지 확인
- string - 에러메시지의 부분문자열인지 확인
- error object - 에러 메시지가 에러 객체의 메시지 프로퍼티와 같은지 확인
- error class - 에러 객체가 넘긴 클래스의 인스턴스인지 확인
💡 코드를 꼭 함수로 감싸야 한다. 그렇지 않으면 에러가 잡히지 않고 테스트가 실패한다.
test("연산 문자열에 0이 포함되어 있으면 IncludeZeroError 반환", async () => {
expect(() => Input.validateNumbers("0,1,2", [])).toThrow(IncludeZeroError);
});
글로벌
afterEach(실행할 함수)
파일의 각 테스트가 완료된 후 함수를 실행한다.
// 테스트 완료 후 모킹 함수를 초기화
afterEach(jest.restoreAllMocks)
jest
jest.fn()
모의 함수를 생성 및 반환한다.
jest.spyOn(객체, "메서드명")
jest.fn() 과 유사하게 모의 함수를 생성하지만 넘겨받은 객체의 메서드 호출도 추적한다.
test("콘솔 테스트", async () => {
const spy = jest.spyOn(console, "log");
console.log("hi");
expect(spy).toHaveBeenCalledWith("hi");
});
jest.restoreAllMocks()
전체 모의 객체와 대체된 속성을 원래 값으로 복원한다.
- jest.spyOn() 과 jest.replaceProperty() 로 생성되고 수정된 모의 객체에만 적용
mockFn
mockFn.mockImplementation(함수)
모킹함수에 추가 구현을 할 수 있다.
const mockFn = jest.fn();
mockFn.mockImplementation(num => num + 1);
mockFn(2); // 3
mockFn(3); // 4
mockFn.mockResolvedValue(value)
아래와 동일한 코드이다.
mockFn.mockImplementation(()=>Promise.resolve(value));
const mockQuestions = (mockInput) => {
const spy = jest.spyOn(Console, "readLineAsync");
spy.mockResolvedValue(mockInput);
};
'TIL > 테스트' 카테고리의 다른 글
BDD, Given-When-Then 패턴 (1) | 2024.10.28 |
---|
공식문서를 보고 그때그때 필요한 문법을 찾아 예제를 적으며 공부합니다.
Globals · Jest
In your test files, Jest puts each of these methods and objects into the global environment. You don't have to require or import anything to use them. However, if you prefer explicit imports, you can do import {describe, expect, test} from '@jest/globals'.
jestjs.io
expect()
expect(값).toBe(비교할 값)
- Object.is(값, 비교할 값) 과 같다
- Object.is() 란?
Object.is === 양쪽의 타입이 다를 경우 false false -0과 +0 false true Number.NaN과 NaN true false NaN과 0/0 true false 객체 비교 참조 비교 참조 비교
expect(calculator.sum()).toBe(6);
expect(객체).toEqual(비교할 객체)
toBe는 객체의 참조값을 비교하지만, toEqual은 모든 필드를 순회하며 값을 비교한다.
test("object assignment", () => {
const data = { one: 1 };
data.two = 2;
expect(data).toEqual({ one: 1, two: 2 }); // pass
});
test("object assignment", () => {
const data = { one: 1 };
data.two = 2;
expect(data).toBe({ one: 1, two: 2 }); // fail
});
expect(모의함수).toHaveBeenCalledWith(인수)
모의 함수가 특정 인수로 호출되었는지 확인한다.
expect(코드).toThrow(error?)
- error 로 들어갈 수 있는 것
- regular expression - 에러메시지 패턴과 일치하는지 확인
- string - 에러메시지의 부분문자열인지 확인
- error object - 에러 메시지가 에러 객체의 메시지 프로퍼티와 같은지 확인
- error class - 에러 객체가 넘긴 클래스의 인스턴스인지 확인
💡 코드를 꼭 함수로 감싸야 한다. 그렇지 않으면 에러가 잡히지 않고 테스트가 실패한다.
test("연산 문자열에 0이 포함되어 있으면 IncludeZeroError 반환", async () => {
expect(() => Input.validateNumbers("0,1,2", [])).toThrow(IncludeZeroError);
});
글로벌
afterEach(실행할 함수)
파일의 각 테스트가 완료된 후 함수를 실행한다.
// 테스트 완료 후 모킹 함수를 초기화
afterEach(jest.restoreAllMocks)
jest
jest.fn()
모의 함수를 생성 및 반환한다.
jest.spyOn(객체, "메서드명")
jest.fn() 과 유사하게 모의 함수를 생성하지만 넘겨받은 객체의 메서드 호출도 추적한다.
test("콘솔 테스트", async () => {
const spy = jest.spyOn(console, "log");
console.log("hi");
expect(spy).toHaveBeenCalledWith("hi");
});
jest.restoreAllMocks()
전체 모의 객체와 대체된 속성을 원래 값으로 복원한다.
- jest.spyOn() 과 jest.replaceProperty() 로 생성되고 수정된 모의 객체에만 적용
mockFn
mockFn.mockImplementation(함수)
모킹함수에 추가 구현을 할 수 있다.
const mockFn = jest.fn();
mockFn.mockImplementation(num => num + 1);
mockFn(2); // 3
mockFn(3); // 4
mockFn.mockResolvedValue(value)
아래와 동일한 코드이다.
mockFn.mockImplementation(()=>Promise.resolve(value));
const mockQuestions = (mockInput) => {
const spy = jest.spyOn(Console, "readLineAsync");
spy.mockResolvedValue(mockInput);
};
'TIL > 테스트' 카테고리의 다른 글
BDD, Given-When-Then 패턴 (1) | 2024.10.28 |
---|