0
4

More than 3 years have passed since last update.

RSpecについて

Last updated at Posted at 2020-05-24

前提

本日学んだことを書いていきます。

本題

モデルスペック(Model spec)

 モデルが正しく機能しているかテストする。
バリデーションのテストで使われることが多い。

リクエストスペック(Request spec)

 GET/POST/DELETEなどのリクエストを送ったとき、正しいレスポンスが返ってくるかをテストする。
 例えばGETリクエストなら正しくページが表示されるか、POSTリクエストなら正しくデータが登録されるか、などのテストを行う。

システムスペック(System spec)

 ユーザーの立場に立って、想定通りの画面操作が行えるかどうかをテストする。
 例えばリンクやボタンをクリックする、フォームに値を入力するなどの操作を1つ1つ行いながらテストする。

Gemfile.
group :development, :test do
  #省略
  gem 'rails-controller-testing'  # 追記
  #省略
end

group :test do
  #省略
  gem 'webdrivers'  # 追記
end

gem 'devise'  # 追記

#省略

リクエストスペック用

rails-controller-testing:便利なマッチャーを提供してくれる

システムスペック用

webdrivers:Chromeとやりとりするのに必要なChromeDriver を含む
devise:ログインなどの認証処理に便利なヘルパーを提供してくれる

get xxx_path

 xxxパスにGetリクエストを送る

expect(response).to xxx

 リクエストを送った結果のレスポンスが xxx であることを確認する

be_success

 成功レスポンス(=エラー無しのレスポンス)である

have_http_status "200"

 レスポンスが200ステータス(ページが正常に表示された意味)を持つ

before do ... end

 上記で囲んだ処理は、同じcontext(なければdescribe)内の it テストの前に毎回実行される

visit xxx_path

 xxx_pathへ飛ぶ

expect(page).to have_content xxx / have_title yyy

 開いたページにxxxが存在する / yyyというタイトルであることを確認

factory_bot_rails

→ファクトリを使えるようにするrails用gem

faker

→人の名前や料理名などをランダムで自動生成してくれるgem。
例えばテストユーザーを100人作りたい場合などに、「ありそうな名前」を100人分自動生成してくれる便利なgem

let(:user) { create(:user) }

 user = create(:user)とほぼ同義。違いとしては、letを使うと遅延評価になる。
 つまり、userという変数が必要とされるまで式が実行されない。
 create(:user)によってユーザーファクトリからサンプルユーザーを作成し、userという変数に代入している。

fill_in A, with: B

 Aの欄にBと入力する

click_button A

 Aボタンをクリックする

have_css 'input#user_email'

 特定のCSS要素が存在することをテストする。

expect(A).to be_truty

「A式の戻り値がtrueであることを確認する」という意味。

expect(A).not_to ...

 toの逆で、「...でないことを確認する」という意味。
 to_notでも同じ意味になる。

0
4
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
4