0
4

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?