Help us understand the problem. What is going on with this article?

FactoryBot 使い方 (RSpec)

More than 1 year has passed since last update.

FactotyBotとは

テスト用データを作成するのに便利なgem

RSpecでテスト駆動開発する際に触ったのでメモとして残しておきます。

導入

Gemを追加

group :development, :test do
  gem 'factory_bot_rails'
end

そして

bundle install

ファクトリの追加

bin/rails g factory_bot:model Event(モデル名)

このコマンドを実行すると
spec/factoriesというディレクトリが作られます。

その中にモデルごとのファイルが生成される。

spec/factories/events.rbを編集

FactoryBot.define do factory :event do
  title { "イベント" }
  info { "イベントです" }   
end end

Rspecで真価を発揮!

次のように書くと、Rspecからファクトリで設定したファイルを呼び出せる

FactoryBot.create(:event)

応用

だが、先ほどのファクトリの書き方のままだと
毎回テストデータの内容がtitle: "イベント",info: "イベントです"になってしまいます。

そこで一意性を持たせる為にFactoryBotには
シーケンスという便利なものがある。

sequence(:title) { |n| "イベント#{n}" }

こう書くだけで、
title:イベント1,イベント2...のようになる。

まとめ

RSpecとFactoryBotでテスト書きまくろう!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away