다양한 단일 테스트 비교
yarn install jest -g
jest --inti // 초기화할 때 모듈을 선택하고 Node가 아닌 jsdom을 선택하세요.
단일 테스트에서 moudle을 찾을 수 없는 경우 jest.config.js 파일을 설정할 수 있습니다.
moduleNameMapper: {
// 'absolute-path': 'relative-path'
'src/(.*)': '<rootDir>/src/$1',
},
Jest 반응형 비동기 테스트 a.test.ts, 콜백 테스트는 테스트를 시작하려면 완료된 함수를 수동으로 실행해야 합니다.
//
jest a.test.ts
퍼지 매칭
test('부동 소수점 합계', () => { var value = 0.1 + 0.2; expect(value).toBeCloseTo(0.3); // });
비동기 통화 테스트
jest.setTimeout(30000);
//중첩 구조는 여러 레이어에 중첩될 수 있습니다.
describe("비동기 호출 테스트", ()=> {
test("callback", (done) => {
function callback(error, data){
if(error){
done(error);
return;
}
try{
expect(data).toBe({price:21});
// done 테스트는 다음의 콜백 이후에만 시작됩니다.
done();
}catch(error){
done(error);
}
}
fetchData(callback)
});
test("then", ()=>{
return fetchData().then((data)=>{
expect(data).toBe({price:21})
})
})
test("await", async()=>{
var data = await fetchData();
expect(data).toBe({price:21})
})
test("mock", ()=>{
const myMock = jest.fn();
console.log(myMock());
myMock.mockReturnValueOnce(10).mockReturnValueOnce("x").mockReturnValueOnce(true);
console.log(myMock(), myMock())
expect(myMock()).toBe(true)
})
test("mock random", ()=>{
const myMock = jest.fn();
// console.log(myMock());
myMock.mockReturnValueOnce(true).mockReturnValueOnce(true);
const result = [11, 12].filter((num) => myMock(num))
console.log(result);
console.log(myMock.mock.calls[0][0])
// console.log(myMock.mock.calls[1][0])
// console.log(myMock(), myMock())
expect(myMock.mock.calls[1][0]).toBe(12)
})
// test
})
const fetchData = async (callback?:any) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve({price:21});
callback?.(null, {price:21})
}, 400);
});
}





