0
0

RSpecでRailsのテストを書いてみる

Posted at

はじめに

Railsの自動テストを学ぶにあたって、RSpecでの実装方法を勉強したので書き残していく。
Ruby:3.2.1
Rails:7.1.2

RSpec のセットアップ

gemの追加。rspec-railsをGemfileに追加する。

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

テスト用のデータベースを設計。今回はSQLiteを採用。

config/database.yml
test:
    <<: *default
    database: db/test.sqlite3

RSpecの基本的な設ファイルの追加。

$ rails generate rspec:install

テストの作成

モデル/ビュー/コントローラーでそれぞれテストを作成していく。
RSpecの基本的な書き方は以下。

RSpec.describe User, type: :mode do
    it "is valid with a name" do
        user = User.new(
        name: "test01")
        expect(user).to be_valid
    end
end

RSpec.describe User, type: :modeの部分は、Userモデルをテストしますよというようなニュアンス。
it "is valid with a name"の部分はexampleというもので、テストの内容を記載する。
今回だと、Userに対してnameのバリデーションがあるかを確認する。
実際のテストはexampleをネストさせて、その中に記載する。
expect(user).to be_validの部分がテストの実処理で、expectに渡したオブジェクトを検証してto be_validではバリデーションが有効かどうかを確認している。
マッチャーの種類については公式リポジトリを参照。
exampleには見出しを担うdescribeや条件分岐のcontextや事前処理のbeforeなどがある。

モデルスペックの作成

以下コマンドで対象のモデルのSpeファイルが作成される。

$ rails g rspec:model モデル名

コントローラスペックの作成

以下コマンドで対象のコントローラのSpeファイルが作成される。

$ rails g rspec:controller コントローラ名 --controller-specs --no-request-specs
0
0
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
0
0