본문 바로가기
개발/Nest

nest 공부 2일차

by 안뇽! 2026. 2. 5.
반응형

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