並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 94件

新着順 人気順

RSpecの検索結果41 - 80 件 / 94件

  • RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita

    Webdrivers::VersionError: Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html # ./spec/system/tasks_spec.rb:24:in `go_to_project' # ./spec/system/tasks_spec.rb:14:

      RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita
    • 壊れたルーティングを検出する route_mechanic gem と、その内部実装の話 - valid,invalid

      壊れたルーティングの検出、routing specを自動化するroute_mechanic gem を作って公開しました。この gem の紹介と内部実装の話を書きます。 rubygems.org 背景 Rails 開発者のうちの N% は、Rails application のルーティングを検証するために以下のようなコードを書いたことがあるかもしれません。 Rails が提供する assertions を使うなら: assert_routing({ path: 'photos', method: :post }, { controller: 'photos', action: 'create' }) rspec-rails なら: expect(:get => "/articles/2012/11/when-to-use-routing-specs").to route_to( :cont

        壊れたルーティングを検出する route_mechanic gem と、その内部実装の話 - valid,invalid
      • 3年の運用で編み出した CircleCI 超設計大全 - Qiita

        個人でも業務でもすごくお世話になっている CircleCI について説明したいと思います。 設定する際の Tips など個人的な観点を元に紹介していきます! CircleCI の構造をざっくりと理解する CircleCI で設定する .circleci/config.yml ファイルの中身の構造について理解していきます。 config.yml は大きく分けて、 version, orbs, executors, commands, jobs, workflows の6つのキーワードに分かれています。 この6つのキーワードを理解することで CircleCI がよくわからない方もざっくりと理解することができます。 version キーワードを除くその他のキーワードを見てもらうとわかりますが、基本的に ****s になっているので複数指定することができます。 では順番にそれぞれのキーワードについ

          3年の運用で編み出した CircleCI 超設計大全 - Qiita
        • Rails: RSpecが好きでないことを思い出したテスト(翻訳)|TechRacho by BPS株式会社

          概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Test which reminded me why I don't really like RSpec | Arkency Blog 原文公開日: 2022/11/03 原著者: Szymon Fiedler サイト: Arkency Blog 2023/02/13: 初版公開 2023/02/14: 原文修正を反映(関連ツイート) 最近、別のソフトウェア会社にいる友人がmutantのセットアップについて助けを求めてきました。問題点を発見するためにサンプルテストを共有しながら作業を進めました。Slackチャンネルで以下のスニペットを目にした瞬間、その場で以下のレスを書き込みました。 私: このexampleを見てると自分がRSpecが好きじゃないことを思い出してしまうよ 友人の返事: 好きにレビューしていいから。若手が書いたコ

            Rails: RSpecが好きでないことを思い出したテスト(翻訳)|TechRacho by BPS株式会社
          • 2021年6月現在、Cupriteで"正しい"システムテストはできるのか?

            まえおき Railsでsystem specを導入するぞ! というときに、Google検索をすると こういう記事が引っかかるかと思います。 単に「Cuprite使えばいいよ!」ではなく、そもそものシステムテストの必要性や開発経緯なども親切に書かれており、非常に素晴らしい記事です。 ただ、結果的にCupriteを称賛した内容で終わっており、人によっては「Seleniumなんか使わずにCuprite使えばいいんだ!」って思う人もいるかも知れません。 個人的にPlaywrightベースのCapybaraドライバを開発していて、その開発の際にCapybaraのソースとかCupriteの動作とか結構見たので、知見の共有をしておこうかなと思います。 SeleniumベースのCapybaraドライバ がスタンダード。それでも、Yet Another Capybaraドライバを求める理由はなんだっけ? そ

              2021年6月現在、Cupriteで"正しい"システムテストはできるのか?
            • Kaigi on Rails 2023 現地参加して "E2E testing on Rails 2023" というお話をしてきた - YusukeIwakiのブログ

              幸いに登壇のチャンスがいただけたので、Kaigi on Rails 2023に現地参加してきました。 E2E testing on Rails 2023 by Yusuke Iwaki - Kaigi on Rails 2023 2年前の「システムテスト解剖学」という発表の続編的な位置づけで、RailsのE2Eテストを取り巻く技術の解説に徹する発表でした。 自分の発表のスタイルとして、「◯◯したらいいよ」「△△ライブラリ使うといいよ」系の発表にはしたくないというちょっとしたこだわりがあり、とはいえ今回の発表は手を抜くと「Playwright最高だよ、めっちゃいいよ」になってしまうので、注意深くストーリー展開を練って本番に望みました。 Node.jsベースのテストランナーを話す必然性 Railsで何をしたら幸せになれそうか?の定義 じつはあれもこれもしなくても、1個だけ仕組みを作ればいいんだ

                Kaigi on Rails 2023 現地参加して "E2E testing on Rails 2023" というお話をしてきた - YusukeIwakiのブログ
              • 【動画公開】RSpec初心者向けのオンライン勉強会を開いてみた (RSpecビギナーズ!! vol.1) - give IT a try

                はじめに 先日、僕の突然の思いつきでRSpec初心者向けのオンライン勉強会を開いてみました。 題して「RSpecビギナーズ!! vol.1」です! ・・・といっても、おそらくほとんどの人が「え、いつそんな勉強会やったの?告知ページはどこ?」と思われるかと思います。 それもそのはず、だってこの勉強会は僕がTwitterで「RSpecの勉強会があったらいいな」とつぶやいている人に声をかけて開催した、個人的な勉強会だからです! ちなみにそのツイートがこちらです↓ 昨日からRspec書き始めたのだけど、試しの1個が1回も通らない😂 ログインのとこがうまく書けてないっぽいけど、、、(導入からうまくできてない可能性もある笑) Rspecの勉強会とかないかなって探したけど、こんなマイナーな勉強会ピンポイントでタイミングよくあるわけないわな😂— かな🐶プログラミング勉強中 (@nyaa_engnr)

                  【動画公開】RSpec初心者向けのオンライン勉強会を開いてみた (RSpecビギナーズ!! vol.1) - give IT a try
                • 週刊Railsウォッチ(20190806-2/2後編)RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか|TechRacho by BPS株式会社

                  2019.08.06 週刊Railsウォッチ(20190806-2/2後編)RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか こんにちは、hachi8833です。来週の週刊Railsウォッチはお盆休みのためお休みをいただきます🙇。先祖の供養を忘れずに。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください 今回は「公開つっつき会」第13回を元にしています。ご参加いただいた皆さま、ありがとうございます! ⚓Ruby ⚓awesome-ru

                    週刊Railsウォッチ(20190806-2/2後編)RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか|TechRacho by BPS株式会社
                  • VCRでWeb APIのモックを楽しよう! - アクトインディ開発者ブログ

                    morishitaです。 最近、Stripeを利用した決済処理の実装をしていました。 tech.actindi.net tech.actindi.net サーバーサイド(Rails)でStripe APIを利用しており、そのテストの実装にvcrを利用しました。 以前から使っていましたが、改めて便利だと思ったのでご紹介。 外部APIを叩くテストのツラミ システム開発をしているとすでにある他のシステムを力を借りるということがあります。 他のシステムのAPIを利用するということですね。 あるいは、ひとつのシステムに必要なすべての機能を実装せず機能ごとにシステムを分割し、お互いにAPIで呼び合ってサービスを実現することもあります。 マイクロサービスアーキテクチャってやつですね。 システム間連携する手段としては古くはSOAP、最近ではgRPCなど様々な方法がありますが、現状最も使われているのはHTT

                      VCRでWeb APIのモックを楽しよう! - アクトインディ開発者ブログ
                    • Railsプロジェクトで発生するflaky testの傾向と対策|グロービス・デジタル・プラットフォーム

                      はじめにはじめまして。この一年ほど学び放題のDevExpチームでバックエンド開発のお手伝いをしてるmasa_iwasakiです。 今回の記事では、学び放題のバックエンドとして使われているRailsアプリケーションで実際に発生していたflaky testの事例を中心に、一般的なRailsアプリケーションで発生しがちなケースをまとめました。 個人的に、flaky testの発生パターンは割と定番化している印象を持っています。たとえば、以下の記事に記載されている内容と本記事の内容は共通するものが多いです。 Ruby: テストを不安定にする5つの残念な書き方(翻訳)|TechRacho by BPS株式会社 しかし、同じ原因で発生したflaky testであっても、コードベースが異なれば発生の仕方は変わりますし、なにより原因の調査にかかる手間は大きく異なります。本記事がflaky testに遭遇し

                        Railsプロジェクトで発生するflaky testの傾向と対策|グロービス・デジタル・プラットフォーム
                      • Rails 7.0に対応した「Everyday Rails - RSpecによるRailsテスト入門」をリリースしました! - give IT a try

                        僕が翻訳しているRSpecの入門本「Everyday Rails - RSpecによるRailsテスト入門」をアップデートしました。 すでに本書をお持ちの方はLeanpubから最新版をダウンロード可能です。 leanpub.com このエントリでは今回のアップデートの注目ポイントを5つ紹介していきます。 また記事の最後には期間限定の割引情報も載ってます! 追記:記事内でお知らせしていた割引キャンペーンは2022年5月8日に終了しました。 【もくじ】 ポイントその1:サンプルアプリやサンプルコードが最新のRailsとRSpecに対応! ポイントその2:統合テストをフィーチャスペックからシステムスペックに変更! ポイントその3:ファイルアップロード機能をPaperclipからActive Storageに変更! ポイントその4:その他、最新バージョンのgemを使うように内容をリニューアル! ポ

                          Rails 7.0に対応した「Everyday Rails - RSpecによるRailsテスト入門」をリリースしました! - give IT a try
                        • システムスペックやフィーチャスペックで「〜が表示されないこと」だけを検証するのはちょっと危険、という話 - Qiita

                          はじめに あなたは現在開発中のRailsアプリケーションでUserを削除する機能をテストしたいとします。 このアプリケーションではUser一覧画面に表示されている"Destroy"リンクをクリックすると、Userを削除できます。 ↓ そこであなたはRSpecで次のようなテストコード(システムスペック)を書きました。 RSpec.describe "Users", type: :system do let!(:user) { User.create! name: 'Alice' } example 'Delete user' do visit users_path # 削除前には"Alice"が表示されている expect(page).to have_content 'Alice' # 削除を実行する click_link 'Destroy' # 削除が完了すると"Alice"は画面に表示さ

                            システムスペックやフィーチャスペックで「〜が表示されないこと」だけを検証するのはちょっと危険、という話 - Qiita
                          • rspecのrspecに学ぶ、シンプルなrspecの書き方 - Qiita

                            例えば、fizz_buzz問題でfizzを出力する振る舞いを確認する場合はこうなる。事前条件は必要ないので書いていない。シンプルで、contextとitをつなげてみたときにわかりやすい英文として記述できる。 describe "#fizz_buzz" do subject { fizz_buzz(input) } context "when input is multiple of 3" do let!(:input) { 3 } it { is_expected to eq "fizz" } end end

                              rspecのrspecに学ぶ、シンプルなrspecの書き方 - Qiita
                            • RSpec における double / spy / instance_double / class_double のそれぞれの違いについて - Qiita

                              RSpec における double / spy / instance_double / class_double のそれぞれの違いについて はじめに RSpec でモックを作る際の double、spy、instance_double、class_double のそれぞれの違いについて説明します。 TL;DR double と比較した際に spy は呼び出されるすべてのメソッドを明示的にスタブする必要がない instance_double は未定義のインスタンスメソッドをスタブしようとした際にエラーになる class_double は未定義のクラスメソッドをスタブしようとした際にエラーになる

                                RSpec における double / spy / instance_double / class_double のそれぞれの違いについて - Qiita
                              • Laravel のテストを describe-it でいい感じに書く - Qiita

                                はじめに PHP のテストといえば PHPUnit が有名ですが、xUnit なフレームワーク故に xSpec の民には辛いものがあります。本記事では Rspec や Jest のように、(個人的に)消耗しない PHP のテストと Laravel への導入方法を紹介します。 Kahlan テストを describe-it で書くために Kahlan を導入します。Kahlan は PHP の BDD テスティングフレームワークです。 kahlan/kahlan インストール

                                  Laravel のテストを describe-it でいい感じに書く - Qiita
                                • 【動画付き】Railsチュートリアルの統合テスト(integration test)は、RSpecのリクエストスペックに置き換えるのがラクです - Qiita

                                  はじめに さきほど、こちらの記事を拝見しました。 RSpecのfeatureテストでsessionを扱う方法 - Qiita 詳しい内容はリンク先をチェックしていただきたいのですが、ざっくりまとめると、 RailsチュートリアルのテストをRSpecのフィーチャスペックに置き換えようとした Railsチュートリアルのテストではsession変数を操作するヘルパーメソッドを使っていたが、フィーチャスペックではその方法がわからなかった rack_session_accessというgemを使ったら、フィーチャスペックからsession変数を操作できた というお話です。 ただ、僕はこの記事を読んで「うーん、僕はフィーチャスペックの中でわざわざsession変数を操作することはしないなあ」と思いました。 というわけで、この記事では「じゃあどうするのがベストだったのか?」という点を議論してみたいと思いま

                                    【動画付き】Railsチュートリアルの統合テスト(integration test)は、RSpecのリクエストスペックに置き換えるのがラクです - Qiita
                                  • テストの抽象化を増やしすぎてはいけない理由(翻訳)|TechRacho by BPS株式会社

                                    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Why avoid too many abstractions in tests? - Write it simple 原文公開日: 2021-02-13 著者: Juan Manuel Ramallo はじめに コードには「プロダクションコード」と「テストコード」があります。プロダクションコードとは、コードベースのうち本番環境で実行される部分を指し、同様にテストコードはテスト環境でのみ実行されるコードベースの部分を指します。プロダクションコードの予行演習はテストコードを介して行われます。 テストコードは「明快で」「読みやすく」「何が行われているのか理解しやすい」ものでなければなりません。shared exampleのようなテストの抽象化は、必ずしもテストコードで不可欠ではありません。 テストコードをDRYにしない理由 プロダクシ

                                      テストの抽象化を増やしすぎてはいけない理由(翻訳)|TechRacho by BPS株式会社
                                    • [図解]スタブとモックの違い - Qiita

                                      Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationWhat you can do with signing up

                                        [図解]スタブとモックの違い - Qiita
                                      • どのフィールドにどの検証エラーが追加されたのかを、「表示言語やエラーメッセージに依存しない形で」テストする方法 - Qiita

                                        はじめに Railsアプリケーションでモデルのバリデーションを検証するをテストケースを想定します。 たとえば、「姓が空文字列であれば検証エラーが発生すること」をテストしようとすると、次のようなテストが書けます。 john = User.new(first_name: '', last_name: 'Lennon') john.valid? expect(john.errors[:first_name]).to include("can't be blank")

                                          どのフィールドにどの検証エラーが追加されたのかを、「表示言語やエラーメッセージに依存しない形で」テストする方法 - Qiita
                                        • DBモデリングとRSpecのワークショップを行いました - Pepabo Tech Portal

                                          皆さんこんにちは!2021 年の新卒エンジニア研修ではフリーランスのRailsエンジニアであるigaigaさんをお招きし2つのワークショップを行いました。1つ目はデータベース(DB)のモデリングについて、2つ目はRailsのテストフレームワークであるRSpecについてです!この記事ではそれぞれのワークショップの様子や学んだことについて参加したメンバーがお伝えして行きたいと思います! DBモデリングworkshop 実施日:2021/06/23 資料:https://github.com/pepabo/training/blob/master/workshop/db_modeling/db_modeling.md ここからは研修に参加した新卒11期エンジニアのゆうくんとやんまーがお送りします。 研修内容 研修は4時間のうち前半に座学を受け、後半に学んだ内容を実践する形で進みました。 前半はデ

                                            DBモデリングとRSpecのワークショップを行いました - Pepabo Tech Portal
                                          • History of RSpec - Steven R. Baker

                                            About Weblog Tech Projects Sorry for the mess. I'm moving things around. It'll be better soon. In 2001 I started teaching Test-Driven Development to teams. Back then it was still a fairly new concept. Few teams had automated tests of any kind, and fewer still had heard of XP and TDD. Writing tests first and using the practise as a design activity was a completely foreign concept, and folks had a r

                                            • RSpecでNaNを判定する - Qiita

                                              Help us understand the problem. What are the problem?

                                                RSpecでNaNを判定する - Qiita
                                              • 個人開発しているRails製のマイクロブログ「Mewst」の少し独特な実装方針 (バックエンド編) - Qiita

                                                最近個人でコツコツ作っていたMewst (ミュースト) というマイクロブログサービスを公開しました。 マイクロブログ「Mewst (ミュースト)」のベータ版をリリースしました | shimba.co Railsを使って実装していて、ソースコードも公開しています。 個人的な好みにより一般的なRailsアプリとは異なる方針で実装しているところがいくつかあるので、この記事ではそれらについてご紹介したいと思います。 個人開発でやっているものなので好き勝手やっています。 この記事を書き始めたときはバックエンドとフロントエンドどちらの方針も書こうかと思っていましたが、思っていたよりも長くなったため2つに分けることとしました。 フロントエンド編はあとで書くかもしれません。 ルーティング定義には基本的に match だけを使用する github.com/mewstcom/mewst/config/rout

                                                  個人開発しているRails製のマイクロブログ「Mewst」の少し独特な実装方針 (バックエンド編) - Qiita
                                                • RSpecでテストを書くときの参考資料神7 - ナガモト の blog

                                                  RSpecをどう書くかは著名な方々が既に語り尽くしている印象です。そのため非常に参考となる7つの資料、通称神7*1の紹介をします。 私はこれまでレビュやエンジニアインターンに教える際に何度となく神7のお世話になりました。そん経験を踏まえてどの資料にどのようなことが記述されているか、どんな人が読むべきかを併記します。 神7 Read Everyday Rails - RSpecによるRailsテスト入門 RSpecえかきうた 使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita Better Specs { rspec guidelines with ruby } GitHub - willnet/rspec-style-guide: 可読性の高いテストコードを書くためのお作法集 Clean Test Code Revised - Speaker D

                                                    RSpecでテストを書くときの参考資料神7 - ナガモト の blog
                                                  • [rspec] 特定のテストのみ実行する方法 - Qiita

                                                    前提 ruby 2.6.3 Rails 6.0.3.1 rspec-rails (3.9.1) system specのテストを書いていると、テストを走らせてから実行にかなり時間がかかりますよね。 個々のテストは、テスト作成時にピンポイントで行い、全てのテストが全てパスしているかは、リモートリポジトリにpushした時にcircle CIに任せるような、割り振りにしたいと考えました。 てな感じで、個々のテストをピンポイントで走らせたい場合について調べました。 特定のファイルのみテストを走らせる #bundle exec rspec spec/パスを指定する bundle exec rspec spec/system/users_spec.rb

                                                      [rspec] 特定のテストのみ実行する方法 - Qiita
                                                    • CodeBuildのレポート機能を使ってRSpecの結果を見る - アクトインディ開発者ブログ

                                                      morishitaです。 前回のエントリで、CodeBuild 上で RSpec を実行する環境について紹介しました。 tech.actindi.net その中で RSpec の結果を CodeBuild のレポートで確認できるようにしてみたらなかなか良かったのでそれについて紹介します。 CodeBuild のテストレポート機能とは 1年ほど前に CodeBuild に追加された機能で、CodeBuild で実行したテスティングフレームワークの実行結果を管理し、見やすく表示する機能です。 例えば、複数回のテストの実行時間やエラー数をグラフにして表示できます。それを見れば、テストケースが増えてきたとか、実行時間がどれくらいとか傾向がわかります。 テスト結果トレンド また、1回のテスト実行結果を次のように表示できます。 1回のテスト結果 主に Java 系のテスティングフレームワークをサポート

                                                        CodeBuildのレポート機能を使ってRSpecの結果を見る - アクトインディ開発者ブログ
                                                      • RuboCop 1.5で導入された`SuggestExtensions`パラメータ - koicの日記

                                                        RuboCop 1.5で導入されたSuggestExtensionsパラメータについて記しておきます。 導入されたパッチは以下です。 github.com たとえば Bundler を使って RSpec を依存指定している一方で、RuboCop RSpec を使っていない場合は、以下のように RSpec に対応した拡張 RuboCop が存在することを rubocop コマンド実行のメッセージでサジェスチョンします。不必要な場合はメッセージ中に含まれている方法でオプトアウトできます。 % bundle exec rubocop --parallel (snip) Tip: Based on detected gems, the following RuboCop extension libraries might be helpful: * rubocop-rspec (http://gi

                                                          RuboCop 1.5で導入された`SuggestExtensions`パラメータ - koicの日記
                                                        • Rails6のActionMailer機能をRSpecでテストする方法 - Qiita

                                                          はじめに 皆様、こんにちは! 佐久間まゆちゃんのプロデューサーの@hiroki_tanakaです。 私は現在、Railsを使用してメール送信機能を持つシステムを構築しているのですが、 Railsの持つActionMailer機能のRSpecでのテスト実装を少し調べたので紹介させて下さい。 記事の流れとしては、最初に利用環境とActionMailerを使うための下準備に触れ、 その後に実際のActionMailer側のコードとRSpecのコードを記載致します。 利用環境 Ruby 2.6.6 Rails 6.0.2 RSpec 3.9.1 下準備 今回はmailgunをESP(Email Service Provider)として、メール送信を行います。 そのため、mailgunで行った設定をdevelopment.rbに記載をして、rails側でmailgunを使用出来るように設定をします。

                                                            Rails6のActionMailer機能をRSpecでテストする方法 - Qiita
                                                          • RSpecで遅いテストをふだんskipして、たまに全部実行する方法 - Qiita

                                                            上のツイートを見て、どうやるのがいいか考えてみました。 以下がその方法です。 遅いテストに:slowタグを付けます(名前は:slowじゃなくても可)。

                                                              RSpecで遅いテストをふだんskipして、たまに全部実行する方法 - Qiita
                                                            • GitHub - willnet/committee-rails: rails and committee are good friends

                                                              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 - willnet/committee-rails: rails and committee are good friends
                                                              • RSpec — Controller or Request Specs?

                                                                by David Elliott (Software Development Profession) We recently started a new Rails 5 project, and a conversation started around if we should be using RSpec controller or request specs. A quick google search shows that in the RSpec 3.5 release notes the recommendation is as follows: “For new Rails apps: we don’t recommend adding the rails-controller-testing gem to your application. The official rec

                                                                • FactoryBotでtraitを使おう - Qiita

                                                                  はじめに FactoryBotでテストデータを作成するに当たってtraitを押さえるのは必須かなと思います。 RSpecをこれから始める方向けにこの記事を書きます。 traitを使ってみる 一例としてTaskのファクトリを作成する場面を想定してtraitを使ってみます。 # spec/factories/tasks.rb FactoryBot.define do factory :task do title { 'Task' } status { :todo } from = Date.parse("2019/08/01") to = Date.parse("2019/12/31") deadline { Random.rand(from..to) } trait :done do status { :done } completion_date { Time.current.yester

                                                                    FactoryBotでtraitを使おう - Qiita
                                                                  • 【rails】rspecでcontrollerのconcern単体テストをやる方法 - ヤサゴリのプログラミングメモ帳

                                                                    ことの始まり 巨大なcontrollerを分割した際、共通で使うメソッドはconcernにまとめておこうと考え。 controllerの単体テストでわざわざconcernの内容も一緒にやるのは馬鹿らしいので、concernの単体テストをやりたくなったが、ちょっと困ったので色々調べた。 せっかくなので、忘れないようにまとめておこう。 ベースとなるconcern 今回作ったのはこんな感じのconcern。 module HogeConcern extend ActiveSupport::Concern def fuga(order) # ハッシュを返し、nameキーに'maccho_'をつける end def piyo piyo_params = params.permit(~~) # permitの中は省略 # 頭に'maccho_'をつけたstrを返す end end fugaメソッドは引

                                                                      【rails】rspecでcontrollerのconcern単体テストをやる方法 - ヤサゴリのプログラミングメモ帳
                                                                    • RSpecを書く上で意識した方がいいと思うことと少しのTips | Offers Tech Blog

                                                                      こんにちは!Offersを開発しているバックエンドエンジニアのShunです。 前回「テストは絶対書いた方がいい」という記事を書いたので、今回はテストを書く上で留意していることを書ければと思います。 そもそも、テストは絶対書いた方がいい 単体テスト・結合テスト・UseCase テストを書いておくことで、テストファイルを見るだけで仕様を理解できたりします。 また、複雑なメソッドほどテストを書いておくことで、きちんと想定した出力を保証したメソッドの実装ができます。 さらに、一度書いたテストは追加機能・修正対応・リファクタリングなどを行った際に、影響してるか否かを自動でチェックしてくれます。 これにより、ユーザ様への円滑な価値提供並びにサービス品質を保証する大事な役割を担ってくれるのです。(テスト書いてなかった頃が恐ろしい) しかし、きちんと書けば書くほどテストのコード量が爆増する 書けば増えます

                                                                        RSpecを書く上で意識した方がいいと思うことと少しのTips | Offers Tech Blog
                                                                      • [Ruby] rspec-mocksを使ってテストで上手に手を抜こう - Qiita

                                                                        対象 rspecでの簡単なテストの書き方は基本的に知ってる rspec-mocksを使ったテストを知らないor知ってるけど雰囲気で使っている 上記に当てはまる私自身が、テストをより効率的に書くために、広く浅くざっくり調べた内容なので、より詳しく知りたい人は公式ドキュメントなどを漁ったほうが良いです。 ※記事中に出てくるコードの多くは、rspecによるテストコード内で実行されるコードです。周辺のコードは省略するので、適当に文脈から読み取ってください。 前提 rspec-core (3.7.1) rspec-mocks (3.7.0) rspec-rails (3.7.2) rspec-support (3.7.1) rspec-mocksとは rspec-mocksは、rspec用のテストダブルフレームワーク。モックとかスタブとかスパイとかサポートしてくれる。 テストダブルとは、テスト対象が

                                                                          [Ruby] rspec-mocksを使ってテストで上手に手を抜こう - Qiita
                                                                        • RSpecで引数に特定の値が渡された時だけスタブしたい - ESM アジャイル事業部 開発者ブログ

                                                                          はじめに こんにちは。入社して4年目になりました、wai-doi です。 お仕事でRSpecでテストを書いていて、 「引数に特定の値が渡された時だけスタブしたい」 ということがありました。そのときどのように書けばよいか分からなかったので、今回は調べたこととその方法を書きます。 実行環境 Ruby 3.1.2 RSpec 3.11.0 サンプルコード 例えば以下の Shopper#buy_fruits メソッドのテストをしたいとします。単純に配列の ['apple', 'banana', 'orange'] を返します。 class Shopper def buy_fruits(shop) basket = [] basket << shop.sell('apple') basket << shop.sell('banana') basket << shop.sell('orange') b

                                                                            RSpecで引数に特定の値が渡された時だけスタブしたい - ESM アジャイル事業部 開発者ブログ
                                                                          • Tests should be fast: why and how?

                                                                            Speed is power, fast is good. But how about tests? Here I explain why speed of tests is important and how to improve it.

                                                                              Tests should be fast: why and how?
                                                                            • 不安定テストを生み出すCapybaraを調教する

                                                                              不安定テストを生み出すCapybaraを調教する 2020/06/12 @銀座Rails #22 Masatoshi Iwasaki

                                                                                不安定テストを生み出すCapybaraを調教する
                                                                              • RSpecでexitを含むコードをテストする - pockestrap

                                                                                TL;DR expect{subject}.to raise_error SystemExit exitをテストする状況はそもそも筋が悪い 前置き こんにちは。私は最近miというRails用のマイグレーションジェネレータを作っています。 github.com Railsのジェネレータは内部でThorというライブラリを使用しています。 このライブラリを使用していく上で、一つ問題が発生しました。 処理を途中で切り上げるためにexitメソッドを使用しないといけない事態に陥ってしまっていました。 問題点 exitはその時点でプロセスを終了するメソッドです。 このメソッドの問題点の一つに、テストがしづらくなると言うことがあります。 例えば、以下のようなメソッドをテストすることを考えます。 def do_something # ... if cond # ... exit 1 end # ... en

                                                                                  RSpecでexitを含むコードをテストする - pockestrap
                                                                                • helperのRSpecの書き方 - Qiita

                                                                                  helperのテストの書き方を忘れるので、備忘録として投稿します。 以下のようにhelperに簡単なメソッドを用意して、テストを書いてみます。 helloというメソッドを実行すると、'hello'という文字列が返ってくる簡単なメソッドです。

                                                                                    helperのRSpecの書き方 - Qiita