概要
Elixir の Faker
を使って、データベースにテスト用のダミーデータを作成します。
Faker
Faker はダミーのデータを作成するツールです。
構造的には多言語構造をしていますが、現在はほとんど英語のダミーデータが生成されます(一部、ロシア語で生成できます)。
日本語に対応した同様なモジュールとしては KazuCocoa/elixir-gimei があります。
生成できるデータには 名前、住所、URL、e-mail アドレスなどがあります。詳細は、Hex doc を参照してください。
準備
データベースを使用する適当なプロジェクトを用意します。今回はこちらのサンプルコードを使います。
deps
に faker
を追加します。
mix.exs
defp deps do
[ {:ecto, "~> 1.0"},
{:mariaex, ">= 0.0.0"},
{:faker, "~> 0.5", only: [:test, :dev]}
]
end
application
の applications
にも追加します。
mix.exs
def application do
[applications: apps]
end
defp apps() do
apps = [:mariaex, :ecto, :logger]
if Mix.env in [:test, :dev] do
apps = apps ++ [:faker]
end
apps
end
ダミーデータの作成
適当な .exs
ファイルにデータ作成のコードを書きます。
下記は RSS の Feed データのダミーデータ作成の例です。
priv/repo/make_fake.exs
SampleElixirEctoSelect.Repo.start_link
alias SampleElixirEctoSelect.RssFeed
Enum.map 0..99,
fn _ ->
params = %{
feed_url: Faker.Internet.url,
title: Faker.Commerce.product_name,
subtitle: Faker.Company.bs,
summary: Faker.Lorem.Shakespeare.romeo_and_juliet,
link: Faker.Internet.url,
author: Faker.Name.name,
image: Faker.Internet.image_url,
}
feed = %RssFeed{}
changeset = RssFeed.changeset(feed, params)
try do
SampleElixirEctoSelect.Repo.insert!(changeset)
rescue
# ignore error
_ -> {}
end
end
次の作成したスクリプトを実行します。
mix run priv/repo/make_fake.exs
完成後のコードはこちらです。