현재 상황
프로젝트에 유닛 테스트가 전혀 없습니다.
- 테스트 프레임워크 미설정
- 핵심 유틸리티 함수들의 동작 검증 불가
목표
utils/ 폴더의 핵심 유틸리티 함수에 대한 유닛 테스트 추가
테스트 파일은 애플리케이션 코드 옆에 배치 (예: github.js → github.test.js)
테스트 대상
utils/github.js
utils/cors.js
파일 구조
utils/
├── github.js
├── github.test.js # 새로 추가
├── cors.js
├── cors.test.js # 새로 추가
├── webhook.js
└── ... (기타 파일들)
구현 가이드
1. 테스트 프레임워크 설치
2. 설정 파일 생성
vitest.config.js:
import{defineConfig}from'vitest/config';exportdefaultdefineConfig({test: {globals: true,},});3. package.json에 스크립트 추가
{
"scripts": {
"test": "vitest run",
"test:watch": "vitest"
}
}4. 테스트 파일 작성 예시
utils/github.test.js:
import{describe,it,expect}from'vitest';import{base64UrlEncode}from'./github.js';describe('base64UrlEncode',()=>{it('should encode Uint8Array to base64url',()=>{constinput=newUint8Array([72,101,108,108,111]);constresult=base64UrlEncode(input);expect(result).toBe('SGVsbG8');});});utils/cors.test.js:
import{describe,it,expect}from'vitest';import{corsResponse,errorResponse}from'./cors.js';describe('corsResponse',()=>{it('should include CORS headers',()=>{constresponse=corsResponse({success: true});expect(response.headers.get('Access-Control-Allow-Origin')).toBe('*');});});describe('errorResponse',()=>{it('should return error with status code',()=>{constresponse=errorResponse('Not found',404);expect(response.status).toBe(404);});});체크리스트
참고
현재 상황
프로젝트에 유닛 테스트가 전혀 없습니다.
목표
utils/폴더의 핵심 유틸리티 함수에 대한 유닛 테스트 추가테스트 파일은 애플리케이션 코드 옆에 배치 (예:
github.js→github.test.js)테스트 대상
utils/github.jscreateJWT()- JWT 생성 및 서명importPrivateKey()- PKCS8 Private Key 파싱sign()- RS256 서명 생성base64UrlEncode()- Base64 URL 인코딩utils/cors.jscorsResponse()- CORS 헤더 포함 응답errorResponse()- 에러 응답 포맷파일 구조
구현 가이드
1. 테스트 프레임워크 설치
2. 설정 파일 생성
vitest.config.js:3. package.json에 스크립트 추가
{ "scripts": { "test": "vitest run", "test:watch": "vitest" } }4. 테스트 파일 작성 예시
utils/github.test.js:utils/cors.test.js:체크리스트
vitest.config.js생성package.json에 test 스크립트 추가utils/github.test.js작성utils/cors.test.js작성npm test로 모든 테스트 통과 확인참고