반응형

4.Node.js/Vitest&TypeBox 12

[TypeBox] 4편. Fastify에서 null,undefined,optional의 계층별 처리 예시

4편. Fastify에서 null,undefined,optional의 계층별 처리 예시 📚 목차1. null · optional · undefined의 계층별 의미2. 컴파일 타임에서 의도 강제하기3. 입력 설계 (DTO): TypeBox로 의도 표현하기4. 입력 데이터 정제 예시 (Input Mapping)5. Repository 계층의 정밀한 쿼리 설계 예시6. 응답 변환 및 데이터 매핑 예시 (Output Mapping & DTO) 1. null · optional · undefined의 계층별 의미실무에서 가장 자주 발생하는 데이터 오류 중 하나는 ‘값이 없는 상태’를 하나의 개념으로 단순화해 버리는 것에서 시작됩니다.그러나 안정적인 시스템을 설계하려면 null, optional, undefin..

[TypeBox] 3편. Fastify TypeBox(legacy) 스키마 패턴 모음

3편. Fastify TypeBox(legacy) 스키마 패턴 모음 📚 목차1. 기본 CRUD & 유효성 검증 패턴 (Validation)2. 고급 타입 & 재사용 패턴3. 파일 업로드 & 다운로드 (Multipart & Stream)4. 응답 표준화 & 전역 스키마 등록 1. 기본 CRUD & 유효성 검증 패턴 (Validation)🔷회원가입 & 로그인 (보안 및 교차 검증)회원가입 시 비밀번호 확인 필드나, 특정 조건에 따른 필드 필수화는 실무에서 자주 발생합니다.import { Type, Static } from '@sinclair/typebox';/** * 회원가입 스키마: 사용자로부터 입력받는 값들의 형식을 정의합니다. */export const UserRegistrationSchema =..

[TypeBox] 2편. Fastify를 위한 TypeBox(legacy) 기본 문법 이해하기

2편. Fastify를 위한 TypeBox(legacy) 기본 문법 이해하기 📚 목차1. 기본 타입과 Object 스키마2. 선택 필드와 컬렉션 (Optional & Collections) 타입3. 조합 타입 (Union, Literal, Enum, Nullable)4. 스키마 유틸리티 (Partial, Pick, Omit)5. TypeScript 타입 추출 (Static) 1. 기본 타입과 Object 스키마가장 기본이 되는 Primitive 타입과 데이터의 뼈대가 되는 Object 구조를 정의합니다. 🔷 1. 기본 타입 정의 및 제약 조건TypeBox는 JSON Schema의 표준 타입을 제공하며, 두 번째 인자로 상세한 유효성 옵션을 전달할 수 있습니다.이 옵션들은 Fastify의 Ajv 엔진..

[TypeBox] 1편. Fastify에서 TypeBox를 사용하는 이유와 적용 방법

[TypeBox] 1편. Fastify에서 TypeBox를 사용하는 이유와 적용 방법 📚 목차1. Fastify에서 Schema가 필요한 이유2. TypeBox의 역할과 동작 원리3. Fastify에서 TypeBox 사용을 위한 기본 설정4. 코드 연결하기: TypeBox 적용 예시 1. Fastify에서 Schema가 필요한 이유 🔷 Fastify에서 Schema의 역할Fastify는 Schema 기반 프레임워크입니다.Route를 정의할 때 Request와 Response 구조를 Schema로 명시할 수 있으며, 이 Schema는 다음과 같은 역할을 수행합니다. 스키마를 통해 얻을 수 있는 주요 이점은 다음과 같습니다:▸ 데이터 검증 (Validation):서버로 들어오는 요청 데이터가 올바른 형식..

[Vitest] 8편. Vitest + V8 기반 테스트 커버리지 : @vitest/coverage-v8

8편. Vitest + V8 기반 테스트 커버리지 : @vitest/coverage-v8 📚 목차1. 테스트 커버리지는 왜 중요한가?2. Vitest에서 커버리지 활성화하기: @vitest/coverage-v8 설정3. 커버리지 리포트 실습 및 예제4. 커버리지 리포트 확인 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. 테스트 커버리지는 왜 중요한가?1. 테스트 커버리지란?테스트 커버리지(Test Coverage)는 전체 애플리케이션 코드 중 테스트로 실행된 코드의 비율을 의미합니다.즉, 작성된 테스트 코드가 실제 애플리케이션의 어느 부분까지 영향을 미치고 있는지를 정량적으로 측정하는 지표입니다. 2. 주..

[Vitest] 7편. Vitest Mocking 이해하기 : vi.mock()과 vi.fn()

7편. Vitest Mocking 이해하기 : vi.mock()과 vi.fn() 📚 목차1. Mocking, 왜 필요할까?2. vi.fn(): 스파이와 가짜 함수 (The Spy)3. vi.mock(): 모듈 통째로 갈아끼우기 (The Replacement)4. Mock 초기화와 관리 (Clean up) 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. Mocking, 왜 필요할까?모킹은 실제 객체나 모듈을 '가짜(Mock)'로 대체하여, 테스트하려는 코드만 고립시켜 검증하는 기술입니다. ① 외부 의존성으로부터의 고립 (Isolation)우리가 작성한 함수가 내부적으로 데이터베이스(DB)에 접속하거나, 외부..

[Vitest] 6편. MSW(Mock Service Worker) + Vitest 실무 API 테스트

6편. MSW(Mock Service Worker) + Vitest 실무 API 테스트 📚 목차1. 테스트에서 네트워크 흐름을 제어하는 MSW의 역할2. Vitest 환경에 MSW 설치 및 설정3. 핸들러 설계: 외부 API 응답 코드 구현 예시4. Fastify 서버와 함께하는 End-to-End 통합 테스트 예시 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. 테스트에서 네트워크 흐름을 제어하는 MSW의 역할MSW(Mock Service Worker)는 이름 때문에 흔히 "가짜 API 서버를 띄워주는 도구"로 오해받곤 합니다.하지만 MSW의 본질은 서버 구현이 아니라, 네트워크 요청을 가로채(Interc..

[Vitest] 5편. Vitest로 외부 API 테스트하기: axios, undici

5편. Vitest로 외부 API 테스트하기: axios, undici 📚 목차1. 외부 API 테스트 실습 준비2. Axios vs Undici3. Axios를 이용한 테스트 (생산성 중심)4. Undici를 이용한 테스트 (성능 및 표준 중심) 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. 외부 API 테스트 실습 준비1. Fasticy 실습용 서버 구현하기import Fastify from 'fastify';import { testRoutes } from './routes/test.routes';const app = Fastify({ logger: true,});app.register(testRo..

[Vitest] 4편. Vitest로 Web API 테스트하기: Fastify inject() 활용법

4편. Vitest로 Web API 테스트하기: Fastify inject() 활용법 📚 목차1. Fastify(5.6) + Vitest 기본 구조 이해하기2. 다양한 입력 유형 테스트 예시: Query, Path, Body, Header3. 인증/인가 API 테스트 예시4. 에러 응답 및 예외 상황 테스트 예시 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. Fastify(5.6) + Vitest 기본 구조 이해하기 1. Fastify 설치# 1. 경로 이동cd /nodejs-tutorials/vitest# 2. fastify 설치npm install fastify# 3. 설치 확인/nodejs-tuto..

[Vitest] 3편. Vitest의 Lifecycle · Async · Execution Control API

3편. Vitest의 Lifecycle · Async · Execution Control API 📚 목차1. Lifecycle Hook API2. 비동기 테스트 패턴(async/await)3. 테스트 실행 제어 API4. 테스트 컨텍스트(Test Context) API 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. Lifecycle Hook APILifecycle Hook은 테스트 실행 전후에 특정 작업을 수행하기 위한 API입니다.서버 기동, DB 초기화, Mock 초기화 등 실무에서 매우 자주 사용됩니다. 1. 라이프사이클 실행 순서 시각화🔸 beforeAll / afterAll - 테스트 파..

[Vitest] 2편. Vitest 테스트 구조 설계와 Assertion, Matcher 이해하기

2편. Vitest 테스트 구조 설계와 Assertion, Matcher 이해하기 📚 목차1. 테스트 선언 API : 테스트 구조 설계 이해하기2. Assertion 진입점 API - expect() 이해하기3. 주요 Matcher API 이해하기 - 값, 구조, 행위 검증 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. 테스트 선언 API : 테스트 구조 설계 이해하기 🔷 테스트 계층 구조 : describe와 it(test)테스트는 크게 그룹(Context)과 사례(Case)로 나뉩니다. 1) describe관련된 테스트 케이스들을 하나의 논리적 그룹으로 묶습니다.테스트 대상의 범위(Context)를..

[Vitest] 1편. Vitest 4로 Node.js 테스트 환경 구축하기

1편. Vitest 4로 Node.js 테스트 환경 구축하기 📚 목차1. Vitest 개요와 실습 환경 이해2. 프로젝트 기본 환경 구성3. Vitest 설치 및 기본 설정4. 첫 테스트 작성 및 실행 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /vitest 1. Vitest 개요와 실습 환경 이해Vitest는 Vite 생태계를 중심으로 탄생한 차세대 테스트 러너입니다.Vite는 Native ES Module(ESM)을 기반으로 매우 빠른 개발 경험을 제공하며, 초기에는 프론트엔드 중심 도구로 출발했지만 현재는 Node.js 백엔드 영역까지 빠르게 확장되고 있습니다. 🔷 Vitest의 핵심 특징1. 빠른 실행 속도Vi..

반응형