fv17の日記 - Coding Every Day

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

Rspec

RSpecにおいて、"FactoryBot"と記述しないで済む方法 / create(:user)と書こう

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

RSpecやFactoryBotを学ぶ際に、参考になる記事一覧

随時更新中 1.【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法 【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法 どんな記事? Ruby、Rails界隈において、日本の…

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章 リクエストスペック

復習用まとめ 本章で学ぶこと リクエストスペックとフィーチャスペックの違い 様々な種類のRESTfulなAPIをテストする方法 コントローラスペックをリクエストスペックに置き換える方法 リクエストスペックとフィーチャスペックの比較 リクエストスペックは sp…

RailsにRSpecを導入する手順

目次 RSpecの導入 テスト用のファイルを自動生成する設定 RSpecの導入 Gemfile group :development, :test do gem 'rspec-rails', '~> 3.6.0' end 書き換えたら bundle install インストール bin/rails generate rspec:install .rspecファイル(設定ファイル)…

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

復習用まとめ 本書の目的 一貫したテスト戦略を学び、自信を持って開発、機能追加、リファクタリングを行う。テストコードがアプリケーションを守ってくれる。 なぜRspecか 読みやすいから。書きやすいから。 対象となる読者 Rails の開発経験は多少あるもの…

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…

Rspec - NoMethodError: undefined method `create' でエラーとなってしまいFactoryが適切に動かない

「Everyday Rails - RSpecによるRailsテスト入門」で学んだまま実装しても、Factoryが適切に動かなかった。実際には、既存コードに引っ張られ、学んだ通りに実装していなかったというオチ。 事象 Rspecの実行において、下記の通りfactoryのcreateで落ちる。…

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

【各章まとめ】Everyday Rails - RSpecによる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はオーバーライドさせ…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第4章 意味のあるテストデータの作成

自分の備忘用に記載。 そのため書籍から内容の増減があります。 本章のゴール Factory Botに焦点を当て、 ファクトリの利点と欠点 ファクトリを用いたテスト実装 その他、ファクトリのリファクタリングや"関連"を表す高度な使い方 ファクトリを使いすぎるリ…

【各章まとめ】Everyday Rails - RSpecによるRailsテスト入門 - 第3章 モデルスペック

自分の備忘用に記載。 そのため書籍から内容の増減があります。 本章のゴール 既存モデルへスペックの追加 バリデーション、クラスメソッド、インスタンスメソッドのテスト記述 テストのリファクタリング モデルスペックの構造 モデルスペックには次を含める…