250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 날짜 테스트
- 최솟갑 구하기
- mutationobserver
- 구름톤 챌린지
- 구름톤챌린지
- 자바스크립트
- 테스트 Date
- ResizeObserver
- Google 애널리틱스
- 프로그래머스
- 귤 고르기
- JavaScript
- Hermes Engine
- nextjs
- Leetcode #javascript #알고리즘 #Algorithms #js
- jest
- create-next-app
- 리액트네이티브
- mock date
- nextjs-performance
- 테이블 해시 함수
- 연결 요소 제거하기
- 헤르메스 엔진
- 통신망분석
- 구름톤
- 과제 진행하기
- 호텔 대실
- 리액트네이티브 엔진
- 중첩 점
- Jest uuid syntax
Archives
- Today
- Total
나만보는개발공부블로그
new Date() 객체 mock 처리 본문
Jest를 통해 테스트를 작성할때 Date() 객체와 관련된 데이터들의 시간을 임의로 설정해서 테스트를 해야하는 상황이 생길 수 있다.
이러한 경우, new Date()함수를 jest.fn()을 통해서 임의로 실행된 node환경에서의 Date()의 시간을 내가 원하는 시간대로 설정할 수 있다.
Jest version 26을 기점으로 작성하는 방식이 다른데
const mockDate = new Date(2022,11,22);
//version 26이상
jest
.useFakeTimers()
.setSystemTime(mockDate);
//version 26이하
//before test
const spy = jest
.spyOn(global, 'Date')
.mockImplementation((...args) => {
if (args.length) {
return new DateReal(...args);
}
return mockDate;
})
//after test
spy.mockRestore()
위와 방식으로 사용할 수 있는데, new Date()객체에는 적용할 수 있지만 Date.now()를 사용할 수 없는데 이런 경우에는
Date.now = jest.fn(() => mockDate.getTime())
//
const dateSpy = jest
.spyOn(global.Date, 'now')
.mockImplementation(() => Date.parse(mockDate));
이런식으로 접근할 수 있다.
만약 DB에 Insert하는 상황에서 parse처리가 제대로 되지않는경우도 생기는데.. 이런 경우는 mockdate library를 사용하면 편하다.
https://www.npmjs.com/package/mockdate
mockdate
A JavaScript mock Date object that can be used to change when "now" is.. Latest version: 3.0.5, last published: a year ago. Start using mockdate in your project by running `npm i mockdate`. There are 144 other projects in the npm registry using mockdate.
www.npmjs.com
MockDate.set(customDate);
//after using it.
MockDate.reset();
'Web Development > Back' 카테고리의 다른 글
NestJS-시작하기 (0) | 2021.09.25 |
---|---|
[CentOS] mariaDB 설치 및 외부 접속 권한 설정 (0) | 2021.02.06 |
[CentOS] node & pm2 & backend 서버 배포 (0) | 2021.02.06 |
[CentOS] Nginx & React 배포 (0) | 2021.02.06 |
[CentOS] Nginx 설치 (0) | 2021.02.06 |