はじめに
RSpecなどでテストする際に、FactoryBotなどであらかじめデータを用意することがありますが、その際にランダムデータをいい感じに作ってくれるFakerの使い方について書いていきます。
準備
gemをインストールするだけです。
group :development, :test do
# (略)
gem 'faker'
end
$ bundle install
使い方
rbファイル内でFaker::[ジャンル].[タイトルなど]
と入力すればOKです。
どんなものが用意されているかは公式リファレンスから確認してみてください。
READMEのとこにサンプルが並んでるので、使いたいものをクリックしてリンク先の表示どおりに使うだけです。
使ってみないとわかりにくいので実際に使ってみます。
今回はMoviesを使ってみたいと思います。READMEのMoviesをクリックすると下のように同一ページのMovies欄に飛びます。
今回はFaker::movie
を使います。
Faker::movie
をクリックして詳細ページに飛びます。
このページに書かれているとおりに記述すれば、ランダムにデータを取得してくれます。
試しにFaker::Movie.title
で映画のタイトルを取得してみましょう。
コンソールで確かめます。
$ rails c
こんな感じで取得してくれます。
ポケモンやスターウォーズなんかのデータもあるので面白いです。
FacrotyBotでの使い方
FactoryBotを使う時は下のように書けばOKです。
FactoryBot.define do
factory :book do
title { Faker::Book.title }
author { Faker::Book.author }
publisher { Faker::Book.publisher }
end
end
同様にseedファイルなんかでも使えば初期データをランダムにいろいろ作成できたりします。