10.1 RspecとFactoryBot

Rspecを導入する

Rspecは、RubyやRubynon Railsで作ったクラスやメソッドをテストするためのフレームワークです。

Rspecはgemとして公開されているので以下のようにGemfileに追加します。

group :development, :test do
  gem 'rspec-rails'
end

gemをインストール

$ bundle install

次に以下のコマンドでRspecがインストールされます。

$ bin/rails generate rspec:install

Running via Spring preloader in process 6819
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

FactoryBotを導入する

FactoryBotはサンプルデータを作成するためのgemです。 FactoryBotもgemとして公開されているので以下のようにGemfileに追加します。

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end

gemをインストール

$ bundle install

以上でFactoryBotの導入は完了しました。

テスト用のデータを準備する

FactoryBotを使ってテストデータを用意していきます。

以下の例ではユーザのテストデータを定義しています。 sequenceを利用することによって連番のデータを作成することができます。ブロック変数のnには連番のデータが入っています。

spec/factories/users.rb

FactoryBot.define do
  factory :user do
    sequence(:email) { |n| "user#{n}@256.tips" }
    password '12345678'
  end
end

定義しものを元に実際にデータを作成していきます。

createメソッドで作成されるデータはDBに保存されます。buildメソッドで作成されるデータはDBに保存されずインスタンスのみが返されます。

@user = FactoryBot.create(:user) #<User id: 1, email: "[email protected]", password: "12345678", created_at: "2018-07-19 08:25:30", updated_at: "2018-07-19 08:25:30">
@user = FactoryBot.build(:user) #<User id: nil, email: "[email protected]", password: "12345678", created_at: nil, updated_at: nil>

results matching ""

    No results matching ""