faker.js

seunghye jo·2024년 5월 8일
0

react library

목록 보기
2/3
post-thumbnail

install

npm i @faker-js/faker --save-dev

import

import { faker } from "@faker-js/faker";

💡 한국어로 데이터를 사용하길 원하는 경우
다음과 같이 한국어용 faker를 import하여 사용 가능
import { fakerKO as faker } from "@faker-js/faker";
or
import { faker } from "@faker-js/faker/locale/ko";

🤡기본 사용법

  • 기본적으로 faker.{카테고리}.{생성함수} 의 형태를 띔

    // faker.카테고리.함수()
    // faker.music.genre() => 음악(music) 카테고리의 장르(genre) 생성함수
    faker.music.genre() // "Soul"
    faker.music.genre() // "Reggae"
  • hydration 이슈 해결법
    faker를 수행하는 코드 앞쪽에 seed함수 호출 → 일관된 응답을 유지해줌

    faker.seed(123);

🤡유용한 faker 카테고리

faker.person 가짜 사용자 정보 생성

faker.person.firstName(); // 'Claude'
faker.person.lastName(); // 'Mueller'
faker.person.firstName(); // 'Dr. Brad Schaden'
faker.person.jobTitle(); // 'Internal Division Orchestrator'
faker.person.sex(); // 'male'

faker.internet 가짜 인터넷 데이터 생성

faker.internet.email(); // 'Claude_Mueller@hotmail.com'
faker.internet.password(); // '3PnJkjkr3mn0tBP'
faker.internet.ip(); // '38.70.50.205'
faker.internet.url(); // 'https://sniveling-script.org'

faker.phone 가짜 전화번호 생성

faker.phone.number(); // '568.567.7782'
faker.phone.imei(); // '12-188918-130546-7'

faker.string 가짜 문자열 데이터 생성

// 무작위 문자열 생성
faker.string.sample(); // '2OZmIYjhiq'
// uuid 생성
faker.string.uuid(); // '4243cdf2-e150-487a-95bc-51808700c4e3'
// nanoid 생성
faker.string.nanoid(); // 'C4_VEoMjzRr-8HHdVrU3_'

/* 
	제한된 문자로만 이루어진 문자열의 경우 기본적으로 한글자만 제공하지만 
	인자로 숫자를 전달하여 글자수를 제 할 수 있음 
*/

// 알파벳
faker.string.alpha(); // 'j'
// 숫자
faker.string.numeric(); // '7'
// 알파벳+숫자
faker.string.alphanumeric(8); // 'rBMLMRg9'
// 특수문자
faker.string.symbol(3); // ')$^'

// 지정된 문자만 사용한 랜덤한 문자열을 생성할 수 있음
faker.string.fromCharacters("xyz", 5); // 'zzxzx'

faker.number 가짜 숫자형 데이터 생성

faker.number.int(); // 1725053848780800
faker.number.float(); // 0.49766366626136005
faker.number.binary(); // 1

faker.datatype.boolean() 가짜 불리언 생성

faker.datatype.boolean(); // true
faker.datatype.boolean(); // true
faker.datatype.boolean(); // false

faker.date 가짜 날짜 데이터 생성

// 무작위 날짜
faker.date.anytime(); // 2023-01-14T18:35:51.237Z
// 가까운 과거
faker.date.past(); // 2023-02-27T07:38:34.596Z
// 먼 과거
faker.date.recent(); // 2023-08-27T08:14:45.903Z
// 가까운 미래
faker.date.soon(); // 2023-08-28T18:48:17.902Z
// 먼 미래
faker.date.future(); // 2024-02-03T17:40:18.962Z`

// 특정 기간 내에서 무작위 날짜를 생성
faker.date.between({
  from: new Date("2000"),
  to: new Date("2002"),
}); // 2000-05-20T00:01:02.041Z

faker.image 가짜 이미지 생성

랜덤한 이미지 url을 생성

// 랜덤한 카테고리의 이미지 url 생성
// 이미지 사이즈의 기본값은 640 * 480
faker.image.url() // 'https://loremflickr.com/640/480/city'
// 이미지 사이즈를 지정해줄 수 있다 (width, height)
faker.image.url(1234, 2345) // 'https://loremflickr.com/1234/2345/sports'

// 아바타 이미지 url 생성
faker.image.avatar() // 'https://avatars.githubusercontent.com/u/97165289'

🤡Faker생성을 도와주는 Helpers

배열에서 무작위로 값을 선택하기

// 배열에서 하나의 값을 무작위로 선택
faker.helpers.arrayElement(["To do", "Doing", "Done"]); // To do

// 배열에서 여러개의 값을 무작위로 선택
faker.helpers.arrayElements(["To do", "Doing", "Done"]); // [ 'Done', 'Doing' ]
faker.helpers.arrayElements([1, 2, 3, 4, 5], 2) // [4, 2]
faker.helpers.arrayElements([1, 2, 3, 4, 5], { min: 2, max: 4 }) // [3, 5, 1]

조건에 일치하는 데이터 배열 생성

배열의 길이 설정 count는 제로베이스

faker.helpers.multiple(faker.person.firstName) // [ 'Aniya', 'Norval', 'Dallin' ]
faker.helpers.multiple(faker.person.firstName, { count: 3 }) // [ 'Santos', 'Lavinia', 'Lavinia' ]

주어진 객체에서 랜덤한 키 or 밸류 반환

// 랜덤한 key값 반환
faker.helpers.objectKey({ myProperty: 'myValue' }) // 'myProperty'

// 랜덤한 value값 반환
faker.helpers.objectValue({ myProperty: 'myValue' }) // 'myValue'

고유값 생성

응답값은 내부에 저장되어 항상 고유한 값을 반환

faker.helpers.unique(faker.person.firstName) // 'Corbin'

주어진 정규식과 일치하는 값 생성

faker.helpers.fromRegExp('#{3}test[1-5]') // '###test3'
faker.helpers.fromRegExp('[0-9a-dmno]') // '5'
faker.helpers.fromRegExp('[^a-zA-Z0-8]') // '9'
faker.helpers.fromRegExp('[a-d0-6]{2,8}') // 'a0dc45b0'
faker.helpers.fromRegExp(/[A-Z0-9]{4}-[A-Z0-9]{4}/) // 'BS4G-485H'
faker.helpers.fromRegExp(/[A-Z]{5}/i) // 'pDKfh'
faker.helpers.fromRegExp(/.{5}/) // '14(#B'

확률에 따라 응답을 생성

확률 기본값 : 0.5

// 설정한 확률에 따라 해당 콜백이 실행. 실패 시 undefined 반환
faker.helpers.maybe(() => 'Hello World!') // 'Hello World!'
faker.helpers.maybe(() => 'Hello World!', { probability: 0.1 }) // undefined
faker.helpers.maybe(() => 'Hello World!', { probability: 0.9 }) // 'Hello World!'

🤡가짜 데이터 생성 예제

faker를 활용한 객체 생성

import { faker } from '@faker-js/faker';

interface User { ... }

function createRandomUser(): User {
  return {
    _id: faker.string.uuid(),
    avatar: faker.image.avatar(),
    birthday: faker.date.birthdate(),
    email: faker.internet.email(),
    firstName: faker.person.firstName(),
    lastName: faker.person.lastName(),
    sex: faker.person.sexType(),
    subscriptionTier: faker.helpers.arrayElement(['free', 'basic', 'business']),
  };
}

const user = createRandomUser();

faker를 활용한 객체 배열 생성

 Array(20)
    .fill()
    .map(() => ({
      id:faker.string.uuid(),
      content: faker.lorem.paragraph(),
      Images: [
        {
          src: faker.image.url(),
        },
      ],
      Comments: [
        {
          User: {
            id: shortId.generate(),
            nickname: faker.name.findName(),
          },
          content: faker.lorem.sentence(),
        },
      ],
    }))
profile
프론트엔드 개발자 성장일기 💭

0개의 댓글