npm i @faker-js/faker --save-dev
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.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.number(); // '568.567.7782'
faker.phone.imei(); // '12-188918-130546-7'
// 무작위 문자열 생성
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.int(); // 1725053848780800
faker.number.float(); // 0.49766366626136005
faker.number.binary(); // 1
faker.datatype.boolean(); // true
faker.datatype.boolean(); // true
faker.datatype.boolean(); // false
// 무작위 날짜
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
랜덤한 이미지 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.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' ]
// 랜덤한 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!'
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();
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(),
},
],
}))