タグ

RSpecに関するshifuminのブックマーク (29)

  • 私のRSpecの書き方 / How I write RSpec

    技術広報として2023年度に頑張ったこと / What we did well in FY2023 as a DevRel

    私のRSpecの書き方 / How I write RSpec
  • N予備校開発でのRSpecの書き方指針 - ドワンゴ教育サービス開発者ブログ

    はじめに テストコード一般の考え方 壊れにくいテストを書く 実装した通りに動作することではなく、仕様通りに動作することをテストする テストコードはシンプルにわかりやすく書く 失敗の原因がわかりやすくなるように意識する RSpecの書き方 テストケース名をitの引数で明記する letよりもlet!を使う 通常の変数と同じ方針に基づいてlet!を利用する subjectを使わない 不要なcontextでのネストを避ける matcherを適切に使い分ける factoryのデフォルト値に依存しないテストを書く 参考にしたブログ記事等 付録:RuboCop設定 We are hiring! サムネイル画像 はじめに テストコードを書く習慣も、近年ではかなり一般的なものになってきました。 ドワンゴ教育事業のバックエンドチームでも自発的にテストコードを書く文化は根付いており、実際に計測はしていませんが、

    N予備校開発でのRSpecの書き方指針 - ドワンゴ教育サービス開発者ブログ
  • RSpec Mocks 3.11 - RSpec Mocks - RSpec - Relish

    rspec-mocks helps to control the context in a code example by letting you set known return values, fake implementations of methods, and even set expectations that specific messages are received by an object. You can do these three things on test doubles that rspec-mocks creates for you on the fly, or you can do them on objects that are part of your system. Messages and Methods Message and method a

  • 【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法 - Qiita

    【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法RubyRailsRSpec # トレーニングジムの予約システムを開発していると仮定してください describe 'キャンセル処理' do let(:user) { create :user } let(:reservation) { create :reservation, user: user, start_at: '2017-08-10 10:00'.in_time_zone } context '24時間前をすぎるとキャンセル料が発生する' do before do travel_to '2017-08-09 10:00'.in_time_zone reservation.cancel! end after { travel_back } let(:billing)

    【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法 - Qiita
  • GitHub - r7kamura/rspec-request_describer: RSpec plugin to write self-documenting request-specs.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - r7kamura/rspec-request_describer: RSpec plugin to write self-documenting request-specs.
    shifumin
    shifumin 2019/04/11
    describeの記述を見てsubjectを生成してリクエストしてくれるの便利そう。
  • 【Rails】RSpecと三種の神器でらくちんWeb APIテスト - Qiita

    はじめに 3月頃,『【Rails】RSpecでWeb APIのテストでハマったところ①』という初心者丸出しな記事を書きました. あれから9ヶ月ほど,お仕事としてRailsに触れたりしたため知見・スキルも向上してきたと思います. そして今,前述の記事を見直したところ恥ずかしくて顔を覆いたくなる感じになったので改めてWeb APIのテストについて書いていきます. APIのテスト? そもそもWeb APIのテストはどこに書くの?ってところからですが… Controller SpecではなくRequest Specに書いていきます. Use RSpec Request Specs Since we’ve established that we’ll be using Rack::Test to drive the tests, RSpec request specs make the most s

    【Rails】RSpecと三種の神器でらくちんWeb APIテスト - Qiita
  • RSpecで悲観的ロックのテストを書く - hitomedia Tech Blog

    こんにちは。花粉症で鼻水が止まらない日々が続いている hilotter です。 同一レコードに対し複数ユーザ(もしくはバッチ処理等)から同時に更新される可能性がある場合、排他制御を行う必要があります。 今回はシンプルなポイント付与機能を例に、悲観的ロックを用いた排他制御のテストを書いてみたいと思います。 シンプルなポイント付与機能仕様 ユーザは他のユーザにポイントを送ることができる 今回のサンプルは以下の環境で確認しました。 Rails 5.1.4 MySQL 5.7.20 MySQLのトランザクション分離レベル REPEATABLE-READ(デフォルト設定) add_pointメソッドの実装 Userモデルにポイントを付与できるadd_pointメソッドを追加します transaction内でlock!を用いて悲観的ロックをかけています。 # app/models/user.rb cl

    RSpecで悲観的ロックのテストを書く - hitomedia Tech Blog
  • Rails5でコントローラのテストをController specからRequest specに移行する - Qiita

    これはなに RSpecを利用したコントローラの機能テストは、Rails4まではcontroller specで行われて来ました。しかしRails5からはrequest specで記述することが推奨され、assignsとassert_templateの使用が非推奨となりました。 rails-controller-testinggemを使用すればassignsやassert_templateを使うことはできますが、やはりrequest specへ移行することが望ましいと考えられています。 これから新しく作成する Rails アプリケーションについては、 rails-controller-testing gem を追加するのはおすすめしません。 Rails チームや RSpec コアチームとしては、代わりに request spec を書くことを推奨します。 RSpec 3.5 がリリースされま

    Rails5でコントローラのテストをController specからRequest specに移行する - Qiita
  • 澳门新葡萄·新京(威尼斯)8883【百度VIP认证】最新娱乐平台

    Bad Request - Request Too Long HTTP Error 400. The size of the request headers is too long.

  • Testing best practices | GitLab

    Test Design RSpec General guidelines Eager loading the application code Ruby warnings Test order Test speed Don’t request capabilities you don’t need Profiling: see where your test spend its time Installation Generate the JSON report How to interpret the flamegraph Optimize factory usage Let’s talk about let Stubbing methods within factories Stubbing member access level Additional profiling metric

  • 使えるRSpec入門・その4「どんなブラウザ操作も自由自在!逆引きCapybara大辞典」 - Qiita

    はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第4回です。 今回はCapybaraを使ったフィーチャスペックについて説明します。 ただし、今までの記事とは異なり、フィーチャスペックのイロハよりも「Capybaraの使い方」に重点を置きます。 なぜなら、僕個人の経験からいって、フィーチャスペックで困るのは「このブラウザの操作って、どうやってコードで表現するの??」というケースが大半だからです。 それ以外は第1回~第3回の内容をそのまま応用できるので、特に「フィーチャスペックだから困る」ということはないと思います。 今回は説明する主な項目は以下の通りです。 フィーチャスペックの基 ページの移動や画面のクリック、フォームの操作など 画面やフォームの検証 画面の操作や検証の応用テクニック その他

    使えるRSpec入門・その4「どんなブラウザ操作も自由自在!逆引きCapybara大辞典」 - Qiita
  • 書きやすく、レビューしやすいRSpecのためのRSpec拡張ライブラリ(Gem) RSpecZ の紹介 - Qiita

    書きやすく、レビューしやすいRSpecのためのRSpec拡張ライブラリ(Gem) RSpecZ の紹介RubyRailsRSpecGemRSpecZ 先日、 表参道.rb に参加させていただき、LTをさせていただきました。 Matz さんがいるとは知らず、驚きました。 なんとそこでMatzさんから「家 RSpec にPR出したら?」とコメントをいただき、PRの出し方のアドバイスまでいただきました( 煽り大事 とのこと)。 まだ家にPRは出せていないのですが、意外と興味持ってくださる方が多いということがわかったので、まだまだ作って間もないライブラリですが、興味ある方に意見をいただきたいので、紹介記事を投稿することにしました。 RSpecZ とは RSpecの問題点である、 長い 、 レビューつらい の解決を目指す RSpec の拡張ライブラリです。 現状では、RSpec の、 let ,

    書きやすく、レビューしやすいRSpecのためのRSpec拡張ライブラリ(Gem) RSpecZ の紹介 - Qiita
  • 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita

    はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第3回です。 今回はRSpecのモックを使ったテストについて説明します。 これまでモックを全く使ったことがない人でもわかるように丁寧に説明していくつもりです。 また、これまでの回と同様、個人的に使用頻度が低いと思っている内容についてはバッサリ説明を省きます。 ただし、第1回や第2回に比べるとテストコードが少し複雑になって、仕組みや動きを想像するのがちょっと難しいかもしれません。 ぱっと頭に入ってこない場合はじっくり文を読んだり、実際に自分で写経しながらコードを動かしたりするなどして、少し時間をかけながら理解するようにしてください。 今回は以下のような内容を説明します。 モックの基的な使い方 モックを使った検証 モックでわざとエラーを発生させ

    使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita
  • Rails tips: RSpecテストを遅くする悪い書き方3種(翻訳)

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: 3 things that slow down and make your RSpec tests worse 原文公開日: 2018/03/21 著者: Paweł Dąbrowsk テストが遅くなる原因はそれはもうさまざまで、コードに関係するものもあればそうでないものもあります。今回は、specを高速化して改善するちょっとした変更のコツをご紹介します。 1. trueかfalseを常に期待する場合はbe_truthyやbe_falseyを避ける まずは以下のコードをちょっとご覧ください。 expect(true).to be_truthy expect(1).to be_truthy expect('string').to be_truthy expect(nil).to be_falsey expect(false).to

    Rails tips: RSpecテストを遅くする悪い書き方3種(翻訳)
  • 移動しました - SmartHR Tech Blog

    Rails のテスト実行時間を60分から6分に短縮するまで - SmartHR Tech Blog

    移動しました - SmartHR Tech Blog
    shifumin
    shifumin 2018/06/23
    「最も時間のかかっていた RSpec は 95 個のジョブに分割しており、RSpec の実行部分は約1〜3分で完了するようになりました」強い。
  • 実用的な新機能が盛りだくさん!RSpec 3.3 完全ガイド - Qiita

    はじめに 2015年6月12日にRSpec 3.3がリリースされました。 APIが大きく変更されたり、派手な新機能が追加されたりはしていませんが、うまく活用するとテストを効率よく書いていけそうな実践的な新機能がたくさん導入されています。 この記事ではそんなRSpec 3.3の新機能を紹介していきます。 新機能一覧 RSpec 3.3で追加された主な新機能は以下の11個です。 これから各新機能の内容を紹介していきます。 特定のエクスペクテーション群をまとめて検証できる(aggregate_failures メソッド) グループやexampleをID指定して実行できる 失敗したテストだけを再実行できる(--only-failures オプション) 失敗したテストを1件ずつ修正できる(--next-failure オプション) テストが増減しても seed を指定したランダム実行が同じ順序で実行

    実用的な新機能が盛りだくさん!RSpec 3.3 完全ガイド - Qiita
  • Railsのテスト実行時間を1/3まで短縮した話 (Rspec + CircleCI)

    背景CIのビルド実行時間の長さは度々社内で問題になっており、「CIに時間かかるので業務効率が下がる」といった話が現場でも増加していました。 業務時間中は複数 Pull Request のビルドが発生するので、「CI順番待ちで次の自分のビルドは1時間後」のような現象は日常茶飯事でした。 おまけに「頻度は低いがランダムで失敗するテスト」といった false positive なテストの存在も、開発現場のフラストレーションは溜まる原因になっていました。単純に CI を再ビルドすれば直るのか、自分が追加した実装/rspecに問題があるのか一件判断がつかないケースだと、開発担当者も一旦 CI 上で再ビルドを行い、同じ箇所でコケるのか確認することになるので、これがさらなる CI 渋滞を引き起こしていました。 こうした背景もあり、丁度プロジェクトの隙間で工数もあったので「CI 改善をしっかり工数確保して

    Railsのテスト実行時間を1/3まで短縮した話 (Rspec + CircleCI)
    shifumin
    shifumin 2018/06/13
    テスト高速化学び。
  • RSpecによるRailsテスト入門

    テストの原則 テストは信頼できるものであること テストは簡単にかけること テストはかんたんに理解できること スピードを重視しないこと テストの中では過度にDRYなコードを目指さないこと テストの重要なテクニック 期待する結果は能動形で明示的に記述すること 起きて ほしい ことと、起きて ほしくない ことをテストすること 境界値テストをすること 可読性を上げるためにスペックを整理すること describe: クラスの機能に関するアウトラインを記述する。 context: 特定の状態に関するアウトラインを記述する。 before: スペック内の重複コードをきれいにするために必要不可欠。describe ブロックの中にある各 example の前(before)に実行される RSpecのセットアップ group :development, :test do gem "rspec-rail

    RSpecによるRailsテスト入門
  • RSpec/Capybaraのテストコードを画面操作から出力するChrome拡張をつくった - memo_md

    ほぼ表題の通りの内容で、Chrome拡張を作ってみた。 完成度としてはまだまだだけど、とりあえずざっくり触れる程度にはなったので公開した。 github.com chrome.google.com アイコン画像は、カピバラの写真を適当になぞって作った。 なんでこんなものを? Capybaraのテストコードを書くのが面倒だなって感じることが多かったのが1つの理由。 TDD的に、先にテストコードを書いていけるのが理想だな〜とは思うものの、Webアプリケーションの開発をしていると、現実には一度は画面から一通り確認して、その後にfeature specを書く流れが多いように感じる。 そしてCapybaraでfeature specを書こうと思うと、 「これはテキストじゃなくてIDで選択しないとダメか〜」 「あ〜、これはfindしてからsetしないといけないのか〜」 という感じで、スムーズに書けない

    RSpec/Capybaraのテストコードを画面操作から出力するChrome拡張をつくった - memo_md
  • 【書評】RSpecの初心者から上級者まで役立つ!「Effective Testing with RSpec 3」を読みました - give IT a try

    はじめに 数ヶ月前、RSpecコミッタのYuji Nakayamaさん(@nkym37)から突然連絡がきて、「リードメンテナのMyron Marstonが今度RSpecのを出版するんだけど、Myronが日人のレビュアーを探している。なので伊藤さん、レビュー記事を書いてみない?」というお話を受けました。 「はい、興味あります!書きます!!」ということで、二つ返事でオファーを受けることにしました😄 というわけで、今回読んだのがこちらの「Effective Testing with RSpec 3」です。 Effective Testing With Rspec 3: Build Ruby Apps With Confidence 作者: Myron Marston,Ian Dees出版社/メーカー: Pragmatic Bookshelf発売日: 2017/08/25メディア: ペーパー

    【書評】RSpecの初心者から上級者まで役立つ!「Effective Testing with RSpec 3」を読みました - give IT a try
    shifumin
    shifumin 2017/09/11
    ebookあるし良さそう。