This page looks best with JavaScript enabled

『パーフェクトRuby on Rails』7章

 ·   ·  ☕ 2 分で読めます

7章

  • モデルに対するテスト
  • E2E(エンドツーエンド)テスト
    • システムスペック
    • リクエストスペック

テストがない状態から初手で書くならE2E推奨

  • メリット
    • 外から見た動きを書けばいいから書きやすい
    • 網羅的なテストなのでテストカバレッジを効率よく広げられる
    • アプリケーションへの理解が深められる
  • デメリット
    • 実行速度が遅い
    • 部品ごとの仕様や正しく動いているかはわからない

factory_bot

  • 乱数を同じにしてテストを行う方法
    Randomized with seed 20966というように表示されるので、--seed 20966とseedオプションを付けることで、テスト実行番号を指定できる。
    実行順序・seedデータが固定される。

  • OmniAuthのモック

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
module LoginHelper
  def log_in(user)
    OmniAuth.config.test_mode = true
    OmniAuth.config.add_mock(
      user.provider,
      uid: user.uid,
      info: {
        nickname: user.name,
        image: user.image_url,
      }
    )
    # ログイン処理
    visit root_path
    click_on 'ログイン'
    @current_user = user
  end

  def current_user
    @current_user
  end
end

Sorceryのテスト用ヘルパー↓
sorcery/lib/sorcery/test_helpers/rails at master · Sorcery/sorcery

RSpecのコントローラスペックは、ビューとrack middlewareを通過せず、コントローラクラスだけテスト実行する。
リクエストスペックでは、コントローラ、ビュー、reck middlewareが実行される。
システムスペックは、ルーティング、ビュー、reck middleware、JavaScriptの実行とアプリケーション全体をブラウザを使って実行する。

スタブ、ダブル、モック

ダブル
オブジェクトの代わりをするオブジェクト

スタブ、モック
ダブルの一種。
スタブはメソッドの戻り値を変更できるが、モックは加えてそのメソッドが呼び出されたかどうか確認できる。

Share on

aiandrox
Written by
aiandrox
今日も楽しく明日も楽しく

目次