자바스크립트로 가짜 데이터 생성하기 - Faker.js
중요: 본 포스팅에서 소개하고 있는
faker
라는 라이브러리는 안타깝게도 안타깝게도 2022년에faker
를 유지보수하던 개발자가 불미스러운 일을 저질러 더 이상 사용하면 안 되는 라이브러리가 되었습니다. 가짜 데이터 생성을 위한 라이브러리가 필요하신 분들은 새로운 포스팅을 참고하시길 바랍니다.
가짜 데이터
시제품(prototype)을 개발하거나, 단위 테스트를 작성할 때 가짜 데이터가 필요할 때가 자주 있습니다. 이럴 때, 직접 가짜 데이터를 하드코딩(hard-coding)할 수도 있겠지만, 좀 더 편하고 빠르게 가짜 데이터를 얻을 수 있는 방법이 있어서 소개드리려고 합니다. 바로, Faker.js라는 라이브러리인데요. Faker.js를 사용하면 가짜 데이터를 정말 너무 간단하게 생성할 수 있습니다. 👍
패키지 설치
$ npm i faker
패키지 임포트
ES 모듈을 사용하는 프로젝트에서는 import
키워드를 사용해서 패키지를 임포트 합니다.
import faker from "faker";
CommonJS를 사용하는 프로젝트에서는 require
키워드를 사용해서 패키지를 임포트 합니다.
const faker = require("faker");
본 포스팅의 모든 예제 코드는 ES 모듈을 기준으로 작성하도록 하겠습니다.
가짜 이메일 생성
가장 자주 필요한 대표적인 가짜 데이터로 이메일을 들 수 있는데요. Faker.js를 이용해서 가짜 이메일을 생성하여 출력하는 코드를 작성해보겠습니다.
import faker from "faker";
console.log(faker.internet.email());
위 코드를 여러 번 실행해보면 매번 다른 이메일이 출력되는 것을 볼 수 있습니다.
$ node .
Paolo.Sauer54@hotmail.com
$ node .
Emmanuel.Hane80@hotmail.com
$ node .
Fredy.Parker@yahoo.com
Faker.js API는 기본적으로 faker.<범주>.<함수>()
형태로 사용하는데요.
Faker.js 공식 문서를 통해서 본인이 원하는 가짜 데이터를 생성하려면 어떤 범주에서 어떤 함수를 사용해야하는지 찾아볼 수 있습니다.
가짜 IP 생성
인터넷(internet) 범주에는 이메일 뿐만 아니라 IP와 같이 다른 가짜 데이터도 생성할 수 있도록 다양한 함수를 제공하고 있습니다.
import faker from "faker";
console.log(faker.internet.ip());
마찬가지로 호출할 때 마다 매번 다른 IP를 랜덤하게 만들어줍니다.
$ node .
241.85.118.52
$ node .
160.76.56.141
$ node .
101.238.204.161
다국어 지원
영어가 아닌 다른 언어로 가짜 데이터를 사용하고 싶을 때는 faker.locale
에 해당 언어의 locale 값을 설정해주면 됩니다.
예를 들어, 이름(name) 범주를 이용해서 한국 사람의 이름과 성을 랜덤으로 생성해보겠습니다.
import faker from "faker";
faker.locale = "ko";
const firstName = faker.name.firstName();
const lastName = faker.name.lastName();
const fullName = lastName + firstName;
console.log(fullName);
이름이 다소 부자연스러운 감은 있지만… 😅 그래도 그럭저럭 구색 맞추는 용도로 쓰는데는 문제가 없는 것 같습니다.
$ node .
연형태
$ node .
홍희율
$ node .
감용찬
아무말 대잔치
이제, Faker.js를 어떻게 사용하는지 더 설명 안 드려도 대강 감이 오셨을 것 같은데요. 마지막으로 제가 개인적으로 애용하는 Faker.js의 API를 소개시켜 드리면서 마무리 하려고 합니다. 저는 랜덤하게 단어나 문장, 문단을 생성할 때 lorem 범주를 요긴하게 사용하고 있습니다.
import faker from 'faker';
console.log(faker.lorem.word())
console.log(faker.lorem.words())
console.log(faker.lorem.sentence())
console.log(faker.lorem.sentences())
console.log(faker.lorem.paragraph())
console.log(faker.lorem.paragraphs())
console.log(faker.lorem.text())
console.log(faker.lorem.lines())
$ node .
suscipit
modi quo modi
Voluptatem deleniti molestiae et ab dolor ipsum.
Quia commodi impedit aut dolor odio. Dolor sapiente ducimus consectetur praesentium natus corrupti natus. Aut inventore alias qui voluptas eius fuga quos architecto et. Aut neque qui sit omnis. Minus in id expedita modi unde magnam eaque tempore ratione.
Labore dicta dolor. Repellendus qui nemo labore placeat. Nostrum non sit odit et ut unde. Accusantium quia quis voluptatem magni. Enim nisi consequuntur incidunt. Ut quas expedita tenetur quia.
Voluptatibus provident quas assumenda facere aut. Illo qui unde nostrum unde ullam doloribus molestiae ratione quasi. Similique tempore id illo quis mollitia debitis est ipsam non.
Optio cumque nulla placeat. Commodi consectetur ratione. Qui laboriosam ab quia aliquam ipsa. Quis quis quia dolorum perferendis soluta repudiandae tempore voluptas occaecati.
Maxime dolore minima illo dolores. Inventore at magni et sed similique facere corporis quia incidunt. Est natus id voluptatibus rerum at aliquam. Corporis qui consequuntur cumque veniam voluptatem. Ratione id sunt.
Similique explicabo vitae recusandae quae. Asperiores qui alias autem et. Dolores delectus eum eius reiciendis sunt et at.
Quia cupiditate odit voluptas consequatur hic quia. Autem perferendis suscipit dolore nisi totam aperiam illum nobis. Voluptatem quae eos quia. Ea repellendus voluptatem maiores aliquid at et cupiditate. Quidem et ab quae vitae natus et dolorem aut ut. Corporis asperiores accusantium.
Voluptatibus aperiam nam cupiditate quos. Consequatur quia ut quis ipsa et et. Unde laudantium ipsam sapiente porro dignissimos aut dolores laboriosam. Eveniet rem quaerat rerum quis consectetur excepturi qui id. Autem aut qui in. Enim repellendus excepturi voluptas.
Dicta et ut laborum quibusdam ut id.
Beatae distinctio sit soluta aspernatur voluptate voluptatum.
Officia nisi doloribus quas dolorem ducimus et.
Placeat minima laboriosam ullam ducimus est eligendi.
Libero soluta ab ut.
마치면서
Faker.js의 사용법이 워낙 간단해서 딱히 예제 코드 말고는 크게 설명드릴 것도 없는 것 같습니다. 사실 제가 보여드린 부분은 Faker.js의 빙산의 일각일 뿐이며 Faker.js가 가짜로 생성할 수 있는 방대한 양의 데이터는 아래 공식 문서를 참고 바랍니다.
실제로 테스트 코드를 작성할 때 Faker.js를 어떻게 활용하는지 궁금하시다면 다음 포스팅를 참고하세요!