2026年9月19日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く⑥ テストデータの使い分け(build/create、let系) 前回まではspecの書き方の話でした。今回はデータを作る側です。 テストデータの扱い方は、実行速度に直結します。そしてlet_it_beのような仕組みを使うと、テスト間でデータが汚染される問題も出てきます。 ActiveRecordFactoryBotRSpec開発手法
2026年9月18日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く⑤ matcherが広すぎると、壊れていても通る 前回は「書いた範囲しか守られない」という話でした。今回はもう少し細かく、どのmatcherを使うかという話です。 同じ検証でも、matcherの選び方で通る範囲の広さが変わります。広すぎると、壊れていても通ってしまう。 RSpec開発手法
2026年9月17日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く④ expectに書いた範囲しか守られない 前回まではspecの構造の話でした。今回は検証の中身です。 テストが通っていても、守られているのはexpectに書いた範囲だけです。書いていない部分は、変わっても落ちません。 カバレッジでは測れません。その行を通ってはい […] RSpecテスト設計開発手法
2026年9月16日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く③ itを必要以上に分けない、aggregate_failuresの使い所 前回までは、specの構造と並び順の話でした。今回はitの中身です。 「1つのitに1つのexpect」という書き方をよく見かけます。RSpecの入門記事にもだいたい書いてあります。ですが、今はまとめて書いた方がいいと考 […] CIRSpec開発手法
2026年9月15日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く② specの並び順と共通化(長いspecの緩和と可読性向上) 前回は、長いspecが辛いのは追加とレビューの時だという話と、ファイル・describe・contextの分け方を書きました。 今回はその中身です。1つのdescribeの中を、どういう順序で書いて、どこまで共通化するか […] RSpec共通化開発手法
2026年9月14日 / 最終更新日時 : 2026年9月19日 admin Ruby on Rails 変更に強いテストを書く① 長いspecが辛いのは、追加とレビューのとき Rails/RSpecでspecをどう書くか、何回かに分けて整理します。 1回目は構造の話です。長いspecの何が辛いのか、そしてファイル・describe・contextをどう分けるか。 RSpecテスト設計開発手法
2024年9月22日 / 最終更新日時 : 2025年1月5日 admin Ruby on Rails RuboCopにRSpecのルールを導入してみた RuboCopにRSpecのルールが提供されているので導入してみました。 RSpecのルールはデフォルトだと厳し過ぎるのと、あえて従いたくないルールもあるので設定変更しました。今まで書いていたものも、自分なりのルールで書 […] RSpecRuboCop
2023年8月6日 / 最終更新日時 : 2024年10月9日 admin Ruby on Rails 0時〜9時前までに実行するとバグる(テストが落ちる)原因と対策 今の現場で、以前から9時前にテストを走らせると落ちる問題があり、 不意に原因が分かったので対応しました。 理解が若干曖昧だったので、改めて再現させて、ベストプラクティスを考えてみました。 先ずは、現象を再現させる 前提: […] ActiveRecordConfigRSpec調査
2023年7月22日 / 最終更新日時 : 2023年7月23日 admin Ruby on Rails FactoryBot作成のベストプラクティス!? RSpecを結構書いてますが、テストを書く上で、FactoryBotが整備されていると楽ですよね。 ただ、最低限でも過剰でも、テストケースが漏れたりします。 また、無駄にINSERTされて、テストが遅くなったりする事もあ […] FactoryBotRSpec共通化
2023年2月22日 / 最終更新日時 : 2023年2月22日 admin Ruby on Rails FactoryBot:リレーション先でリレーション元と同じidで作成されるようにする なんのこっちゃ? タイトルを上手く書けなかったので、ER図で説明します。 下記のようにtask_cyclesにspace_idを入れなくてもtasksを経由すれば引けるのですが、DBのindexを効率的に利かせたいのと、 […] ActiveRecordFactoryBotRSpec