반응형
TDD로 유효성검사를 만들었다.
Test 코드
describe('CreateBookDto 유효성 검사', () => {
it('title이 비어있으면 실패', async () => {
const dto = new CreateBookDto();
dto.title = '';
dto.author = '작가';
dto.isbn = '978-3-16-148410-0';
const errors = await validate(dto);
const titleErrors = errors.filter((e) => e.property === 'title');
expect(titleErrors).toBeDefined();
});
})
여기서 validate(dto)가 반환하는 errors는 배열이고 각 요소는 property, constranints를 가진다.

테스트코드에서 class-validator의 MaxLength, IsISBN같은걸 쓸 필요 없음.
dto에서 유효성 검사를 구현하고, 테스트코드에선 class-validator의 'validate'함수를 쓰면 됨.
validate는 DTO 인스턴스를 직접 검증한다.
ValidationPipe 활성화
main.ts에 validation pipe 안하면 유효성 검사 작동 안함
Restful 한 것
책 1권 등록을 `POST: /books` 로 하는것도 일반적이구나?
나는 findAll에만 books를 쓰고 create에는 book을 해야한다고 생각했음. 왜냐하면 batch가 아니니까.
반응형
'개발 > Nest' 카테고리의 다른 글
| nest 3일차 (0) | 2026.02.07 |
|---|---|
| 다시 nest (0) | 2026.02.04 |
| 리포지토리 패턴 (0) | 2024.11.16 |
| @UsePipes와 ValidationPipe로 유효성검사 (0) | 2024.11.15 |
| Nest 공식문서에서 dto 생성시 interface보다 class를 권장하는 이유 (0) | 2024.11.14 |