fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rspec

RSpecがRandom failする場合の調査方法や対処方法

Random failする理由は様々ですが、下記を見てみます。 それぞれの詳細は別途ググって見てください。 feature specでCapybara::ElementNotFound等で落ちる場合 データ不整合等の理由で、特定の実行順で落ちる場合 1. feature specでCapybara::ElementNotFoun…

RSpec - マッチャ一覧

参照は下記。本記事にないマッチャはいずれかを参照すれば見つかる。 公式Doc Built in matchers - RSpec Expectations - RSpec - Relish File: README — Documentation for rspec-expectations (3.8.2) @jnshitoさんの記事 使えるRSpec入門・その2「使用頻…

【復習用】【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門

第1章 イントロダクション https://forest-valley17.hatenablog.com/entry/2018/10/10/180159第2章 RailsにRSpecを導入する手順 https://forest-valley17.hatenablog.com/entry/2018/10/11/004138第3章 モデルスペック https://forest-valley17.hatenablog.c…

RSpecにおいて、テストの可読性を高める

everyday Rails 第8章 「テストの可読性を改善する(p146~)」を読んでおり、理解を深めたかったので下記で補完。下記の記事を読むことにより書籍の理解が深まったこと、またテストコード以外でも読みやすく記述する技に気づくことができたのでオススメ。 参照…

RSpec - Request Specにおいてsign_in / sign_outを実装する場合の設定

参照 Qiita記事とかで色々書かれていますが、公式docのWikiを参照 How To: sign in and out a user in Request type specs (specs tagged with type: :request) · plataformatec/devise Wiki · GitHub シンプルな実装 rails_helper.rbに下記の1行を追加する…

RSpecにおいて、FactoryBot.create(:xxx) の FactoryBot を省略する

毎回、下記のようにFactoryBotって書いているのが苦痛。everyday Rails にはこの書き方しか無かったから、こういうもんだと諦めていた。 let(:user) { FactoryBot.create(:user) } こう書きたい。 let(:user) { create(:user) } 解決方法 spec/rails_helper.…

RSpecを学ぶ時、書く時に参考になる記事一覧

随時更新中。「everyday Rails RSpecによるRailsテスト入門」を読了後に読むモノ。 初めてRSpecを学ぶ場合は、何も考えずに書籍の購入をやりこむのがオススメ。 公式 - 基本的なマッチャ一覧 https://www.rubydoc.info/gems/rspec-expectations/frames#Built…

RSpec - コントローラスペックでは何をテストすべきか

前提 Rails5からは request spec で記述することが推奨され、公式から controller spec を書くことは非推奨とされている。 参考にした記事 RailsのController Spec | 酒と涙とRubyとRailsと Rails テスティングガイド | Rails ガイド テストすべき内容 Webリ…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第8章 スペックをDRYに保つ

復習用まとめ 本章で学ぶこと ワークフローをサポートモジュールに切り出す テスト内でインスタンス変数を再利用するかわりにletを使う shared_contextに共通のセットアップを移動する カスタムマッチャの作成 テストを集約して、複数のスペックを一つにする…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第7章 リクエストスペック

Everyday Rails 「RSpecによるRailsテスト入門 - 第7章 リクエストスペック」の復習用まとめ。 letなどは第7章でまだ出てきていないため、DRYではない箇所多数。 目次 (APIの)GETリクエストのテスト (APIの)POSTリクエストのテスト コントローラスペックをリ…

RailsにRSpecを導入する手順

everyday Rails の第2章より必要な要素だけ抽出 目次 RSpecの導入 出力フォーマットを読みやすくする binstubを使い、起動時間を短くする テスト用のファイルを自動生成する設定 RSpecの導入 Gemfile group :development, :test do # ... gem 'rspec-rails',…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第1章 イントロダクション

「Everyday Rails - RSpecによるRailsテスト入門 - 第1章 イントロダクション 」の復習用まとめ。leanpub.com 本書の目的 一貫したテスト戦略を学び、自信を持って開発、機能追加、リファクタリングを行う。 テストコードがアプリケーションを守り、変更に対…

Rails - Guardを使い、ファイル変更時にMinitestやRspecを自動実行する

やりたいこと ファイル更新時にテストを自動で行う 例えば、home.html.erbファイルが変更されたらstatic_pages_controller_test.rbを自動的に実行する Gemfileの設定 次の2行を追加 group :test do gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end…

FactoryBot.create(:hoge) ではなく create(:hoge) と書く方法

やりたいこと Rspec において、FactoryBot.create(:hoge) の FactoryBot を毎度記述せずに create(:hoge) と書きたい。 結論 rails_helper.rb に下記を加えれば良い。 config.include FactoryBot::Syntax::Methods 参考 https://github.com/thoughtbot/facto…

Capybara - Capybara::DriverNotFoundError:が出てRspecでエラーとなる場合の対処方法

Everyday rails Rspecの書籍(P106あたり)を写経してたらエラーで詰まった。 問題 Rspecにおいて、visit root_pathで下記エラー Capybara::DriverNotFoundError: no driver called :selenium_chrome was found, available drivers: :rack_test, :selenium 原…

RSpec - フィーチャスペックを導入する

everyday Rails の「第6章 フィーチャスペックでUIをテストする」の復習用まとめ。 書籍から内容の増減があります。 本章の前提 フィーチャースペックとは、モデルとコントローラが 他の モデルやコントローラとうまく一緒に動作することを確認するテ…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第5章 コントローラスペック

自分の備忘用に記載。 そのため書籍から内容の増減があります。 本章の前提 コントローラのテストは削除、あるいは統合テスト等への移行が推奨 そのため、既存システムでコントローラのテストがある場合に備えて学ぶ 筆者は、コントローラのテストはアクセス…

factory_bot - create_listメソッドの使い方

使い方 create_list(<作成したいファクトリ名>, <作成するインスタンス数>, *<トレイトやオーバーライドしたい項目>) # 戻り値はArray 具体例 create_list(:user, 3, :admin, :male, name: "Jon Snow") adminとmaleはここではtrait nameはオーバーライドさせ…

RSpec - FactoryBotを導入し、効率良く意味のあるデータを作成する

「Everyday Rails - RSpecによるRailsテスト入門 - 第4章 意味のあるテストデータの作成 」の復習用まとめ。leanpub.com 本章のゴール Factory Botに焦点を当て、 ファクトリの利点と欠点 ファクトリを用いたテスト実装 その他、ファクトリのリファクタリ…

RSpec - モデルスペックとは

「Everyday Rails - RSpecによるRailsテスト入門 - 第3章 モデルスペック 」の復習用まとめ。leanpub.com 本章のゴール 既存モデルへスペックの追加 バリデーション、クラスメソッド、インスタンスメソッドのテスト記述 テストのリファクタリング モデル…