0
1

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 1 year has passed since last update.

railsテスト入門(Rspec

Last updated at Posted at 2022-10-24

このドキュメントの目的

railsのテストを勉強し始めるに当たってのメモ。主にRspec

テストの流れ

  • spec配下にテストをかく
  • bundle exec rspec specでテスト
  • 成功したかどうか返ってくる

minitestかRspecか

RSpecとminitestのおおまかな違い
https://qiita.com/kenkenkengo-y/items/5fb3f3602dcf3826ce19

Rspec導入

Rails+RSpecで気軽に始めるテスト
https://weseek.co.jp/tech/1409/

factorybot導入

factorybotはテストデータを簡単に用意できるgem

なにをテストすべきか?

テストの内容は大きく分けると下記3つ。定義は上記記事。

  • 単体テスト
  • 結合テスト
  • システムテスト

システムテストは実際にはQAやE2Eでテストされることが多く、テストを書くのは単体、結合が主。

Rspecで覚えておきたい用語

  • モック:実際のコードではなく、testを代わりに実行するプログラム。外部のAPIを試したい時とかに使う

Rspecの基本的な書き方

上記の「describe / it / expect の役割を理解する」がよくまとまっている

RSpec.describe '四則演算' do
  it '1 + 1 は 2 になること' do
    expect(1 + 1).to eq 2
  end
end

使用頻度の高いマッチャ

モックとスタブの違い

  • そもそもモックとスタブは仮の部分を書いてテストすること。例えばAPI部分などテストで実際に送れないところをモックで代用することでテストしやすくする。例えば下記で使用
    • APIの応答
    • tweetなど外部に公開する部分
  • モックはプログラム全体に対してテストを行い、反応を見るものでスタブは対象のメソッドのみテストするもの

モック

  • データベースのアクセスなしで動く
  • doubleを用いて影武者を生成

スタブ

  • テスト用のダミーメソッド
  • データベースやネットワークを使うメソッドをデータベースへのアクセスなしで呼び出す。
  • allow(モデル名).to メソッドを用いてダミーメソッドを作成

テスト実行

全てのrspecのテストを行いたい場合は下記(docker内

docker-compose run web bundle exec rspec
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?