Faker.js를 통한 Seed API 작성

백엔드를 개발하다보면 REST API의 GET 메소드에서 DB에서 데이터를 제대로 불러오는지 확인해야하는데 이럴 때 Seed API를 통해 테스트 용도의 fake DB를 구성하는 것이 매번 데이터를 직접 입력해넣는 시간을 절약할 수 있으므로 좋다고 생각했다. TypeScript기반의 NestJS로 백엔드를 구성하다보니 Faker.Js 패키지를 활용하여 Seed API를 작성하였다.

 

Faker.JS의 패키지 설치 방법은 매우 간단하다.

npm i faker

Faker.JS는 Typescript가 아닌 순수 JavaScript로 작성되어 사용하는 방법에는 두 가지가 있다.

//@ts-ignore
import faker from 'faker';
const faker = require('faker');

 

위와 같이 import 한 후에 사용하면 된다.

 

Faker.Js의 문서를 살펴보면 매우 많은 종류의 seed 메소드를 지원하고 있다. 대표적으로 address, animal, commerce, company 등이 있다. 내가 사용한 것은 Seed User API와 Seed Product API를 작성하기위한 user, internet, commerce 메소드이다. 

//user.service.ts
async createFakeUser(number) {
    const faker = require('faker');
    for (let i = 0; i < number; i++) {
      const email = faker.internet.email();
      const password = faker.internet.password();
      const username = faker.internet.userName();
      const avatar = faker.image.avatar();
      const name = faker.name.findName();
      const phoneNumber = faker.phone.phoneNumber();
      const description = faker.lorem.sentence();
      const marketingAgree = faker.datatype.boolean();
      const request = {
        email,
        password,
        username,
        avatar,
        name,
        phoneNumber,
        description,
        marketingAgree,
      };
      await this.repository.save(request);
    }
    return 'Fake Users added success!';
  }
}

//user.controller.ts
@Post('/fake/:numbers')
async createFakeUser(@Param('numbers', ParseIntPipe) numbers: number) {
    return this.service.createFakeUser(numbers);
  }

Seed API를 호출할 때 한번에 원하는 만큼 Fake 데이터를 DB에 저장할 수 있도록 number값을 파라미터로 받아 for문으로 fake 데이터를 생성과 저장을 반복하게 하였다.