24
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】テストに使うダミーデータを用意する【Faker】

Posted at

はじめに

RSpecなどでテストする際に、FactoryBotなどであらかじめデータを用意することがありますが、その際にランダムデータをいい感じに作ってくれるFakerの使い方について書いていきます。

準備

gemをインストールするだけです。

Gemfile
group :development, :test do
  # (略)
  gem 'faker'
end
ターミナル
$ bundle install

使い方

rbファイル内でFaker::[ジャンル].[タイトルなど]と入力すればOKです。
どんなものが用意されているかは公式リファレンスから確認してみてください。

READMEのとこにサンプルが並んでるので、使いたいものをクリックしてリンク先の表示どおりに使うだけです。
278199070c4abe565b7f1ecb13ca831c.png

使ってみないとわかりにくいので実際に使ってみます。
今回はMoviesを使ってみたいと思います。READMEのMoviesをクリックすると下のように同一ページのMovies欄に飛びます。
25cbc0c934fbfedd13009afd6e7fb9ff.png
今回はFaker::movieを使います。
Faker::movieをクリックして詳細ページに飛びます。
9c862c81313fa7018403ab0fb7212a8e.png
このページに書かれているとおりに記述すれば、ランダムにデータを取得してくれます。
試しにFaker::Movie.titleで映画のタイトルを取得してみましょう。

コンソールで確かめます。

ターミナル
$ rails c
95008ab8d5f596fb880f99867f2cab20.png

こんな感じで取得してくれます。

ポケモンやスターウォーズなんかのデータもあるので面白いです。
3b3af87aaeeec64d399f9f9819055435.png
b03d65bc4ae23c1a32f8c04b8bf6266e.png

FacrotyBotでの使い方

FactoryBotを使う時は下のように書けばOKです。

book.rb
FactoryBot.define do

  factory :book do
    title     { Faker::Book.title }
    author    { Faker::Book.author }
    publisher { Faker::Book.publisher }
  end

end

同様にseedファイルなんかでも使えば初期データをランダムにいろいろ作成できたりします。

24
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?