並び順

ブックマーク数

期間指定

  • から
  • まで

121 - 160 件 / 192件

新着順 人気順

RSpecの検索結果121 - 160 件 / 192件

  • FactoryBotでのデータ生成を今一度見直す - スタディサプリ Product Team Blog

    FactoryBotでのデータ生成を今一度見直す こんにちは。 プロダクトプラットフォームチームの@kazu9suです。 今回は、DX(Developer Experience)改善活動の一環として、テストにおけるデータ生成を見直したお話をしたいと思います。(所要時間5分程度で読める内容です) 背景 スタディサプリでは、新規サービスにおいてはGoなど別言語での開発も推進していますが、今でもメインのシステムはRuby on Railsで構成されており、テスト時のデータ生成には FactoryBotを利用しています。 スタディサプリチームはCIでの並列実行によるテスト実行時間の短縮など足回りはとても整備されているのですが、テストを書くという体験そのものにはまだ改善の余地があるのではないかと思われました。 そこで改善施策の一環として、FactoryBotを活用したデータ生成を見直してみることにし

      FactoryBotでのデータ生成を今一度見直す - スタディサプリ Product Team Blog
    • RSpecで何をテストしたらいいのか決めてない時、とりあえずわたしが書いてるもの。 - Qiita

      はじめに やりたいこと:カッコよくグリーンを出したい! 「テストは大事!」とは言うものの、どんなRSpecを書いたらいいのかわからない...。 そんな状況が、Railsのお仕事に本格的に関わるようになってから、続いておりました。 そもそも自動テストには憧れがありますし、specを実行して、ターミナルに緑の文字を出したいのはやまやまです。でも、何を書けばいいのかわからない。 そんな時の、とりあえずの取りかかりの例を載せてみます。 ※ この記事の例について: 下記の例は、実際はテストとして無理に書く必要はないものだったりします。 自明なものを書きすぎると、たとえば全てのテストを通すのにも非常に時間がかかってしまいますので、このあたりは、rspecを動かす場合の確認用、1例として見ていただけると幸いです。 ※ これからRspecを始めたい方 / 初心者の方へ (20180523 追記) @jnc

        RSpecで何をテストしたらいいのか決めてない時、とりあえずわたしが書いてるもの。 - Qiita
      • Dealing with Flaky Tests

        Jason Swett asked on Twitter if anyone has an app with 2000+ tests that does not have a severe flaky test problem. I have two such apps, and I want to share the lengths I’ve gone to to make the tests not flaky. In a nutshell, you have to build and design for testability at all levels, plus ensure your tests are clear about what is the cause of a failure. Why Are Tests Flaky? In my experience, test

        • flashメッセージが時々表示されないflakyテストを改善した話 - おもしろwebサービス開発日記チラシの裏

          Railsで cookie sessionを使っている 非同期でAPIをよく叩いている という条件下で、例えば日報を投稿したあとに"投稿しました!"というflashメッセージを表示しているはずなのになぜか"投稿しました!"が表示されないという現象が時々起こっていました。 これは次のようなことが原因だと推測しています。 非同期API(例: 日報のプレビューを表示する)が実行される 日報投稿ボタンを押す 投稿が成功して日報詳細ページへのリダイレクト用のレスポンスが返される SetCookiesでflashメッセージを含んだcookie sessionが返される 非同期APIのレスポンスが返る SetCookiesでflashメッセージを含まないcookie sessionが返される 日報詳細ページへのリクエストが実行される このとき送信するCookieにはflashメッセージが含まれていないの

            flashメッセージが時々表示されないflakyテストを改善した話 - おもしろwebサービス開発日記チラシの裏
          • RSpecで特定のテストを実行する方法

            RSpec で特定のテストを実行する方法について書きます。 処理を追加したときや、落ちたテストを修正して確認したい時などに便利で使っています。 特定のテストだけを実行する方法

              RSpecで特定のテストを実行する方法
            • RSpecにおけるモックとスタブ - Qiita

              Help us understand the problem. What is going on with this article?

                RSpecにおけるモックとスタブ - Qiita
              • 【RSpec】「letかlet!か」に終止符を打つ

                letとlet! RSpecを書いていれば誰もがご存じのletですが、let!との使い分けってどうされていますか? 私はletは遅延評価されるため、後述で参照される場合はletを使用していました。 その方が省エネかなというくらいで、そこまで強い理由ではありません。 let(:user) { create(:user, name: '太郎') } let(:article) { create(:article, user: user) } そんなある日、同僚からこちらを紹介していただきました。 弊社、株式会社iCAREの技術顧問でもあるwillnetさんのspeakerdeckです。 この中には「letとlet!どちらでも良い場合はlet!」という文言があります。 今回こちらについてwillnetさんにいくつか質問をさせていただき、 今後テストを書く際は明確な理由を持って使い分けができること

                  【RSpec】「letかlet!か」に終止符を打つ
                • https://solnic.dev/the-5-rules-of-simple-rspec-tests/

                  • Rails 5.x に更新する際に rails_kwargs_testing gem を使ったら便利だった - There's an echo in my head

                    Rails 4.x で動いている社内ツールを Rails 5.x に更新する作業を最近やっていて、コントローラ・リクエスト周りのテストの書き換えに rails_kwargs_testing gem が便利だったのでメモ。 ざっくり書くと、これを使うと Rails 5.x 用のテストコードに寄せた状態で Rails 4.x 上でテストを実行できるようになるので、 BUNDLE_GEMFILE で Rails 4.x と 5.x 用の Gemfile を指定することで両方を CI で走らせることが容易になる。詳細は作者である r7kamura さんのブログに書かれているので、そちらを参照してもらいたい。 r7kamura.com rspec の場合の tips として、テストファイルごとの describe ブロックで prepend するのではなく、 controller spec や re

                      Rails 5.x に更新する際に rails_kwargs_testing gem を使ったら便利だった - There's an echo in my head
                    • instance_doubleとinstance_spyの使い分け

                      RSpecの #instance_double と #instance_spy の使い分けについて考察してみた。個人の見解です。 環境・バージョン ruby 2.7.0p0 rspec-mocks 3.9.0 #instance_double と #instance_spy の違い・共通点 Verifying Doubles #instance_double も #instance_spy も、Verifying Double と呼ばれるオブジェクトを返すという共通点がある。 これは何かと言うと、テストダブル対象のインスタンスに存在しないメソッドがスタブされた場合や、引数が異なる形式でメソッドが呼び出された場合にエラーを起こしてくれるという機能を持つオブジェクトである。 一方、#double や #spy が返すオブジェクトにはそういった機能はなく、存在しないメソッドをコールしても良いし、

                        instance_doubleとinstance_spyの使い分け
                      • RSpec から API ドキュメントを生成する「rspec-openapi」を試してみた - stmn tech blog

                        はじめに 本記事では RSpec の request spec から OpenAPI 仕様のドキュメントを出力する Gem、rspec-openapi を紹介します。 ドキュメンテーションツール導入にあたっての負担を少なくしたい、実装とドキュメントが乖離しないようにしたい、という場合に参考になるかもしれません。 背景 これまで弊社では、 API ドキュメントは社内 wiki に蓄積されていました。 最初はこれでも問題にならなかったのですが、機能が増えてきたことによってドキュメントの数も増えて管理が難しくなったり、 フォーマットが明確でないので書く人によってばらつきがあるという問題がちらほら出てくるようになります。 API ドキュメント標準化といえば OpenAPI が思いつくものの、記述のために DSL を理解する必要があるとか追加で何か学習が必要となると、全員に浸透させるのはハードルが高

                          RSpec から API ドキュメントを生成する「rspec-openapi」を試してみた - stmn tech blog
                        • Rspecの設定はrails_helper.rbにだけ書けばよい - Qiita

                          今までRspecを使うときは、漫然と先人のコードをコピペして、設定をrails_helper.rbに書いたりspec_helper.rbに書いたりしていましたが、「rails_helper.rbにだけ書けばよい」という結論に至りました。 次のStack Overflowの回答を参照。spec_helper.rbは、Railsを読み込まずにRspecだけで何かしらRubyのコードをテストするのに使うらしい。 ruby on rails - How is spec/rails_helper.rb different from spec/spec_helper.rb? Do I need it? - Stack Overflow Rspecが生成するrails_helper.rbのテンプレートの先頭は次のようになってます。まず、spec_helper.rbを読み込み、その後でRails(conf

                            Rspecの設定はrails_helper.rbにだけ書けばよい - Qiita
                          • Railsでのテストにおいて、リクエストホスト名はデフォルトだと www.example.com - コード日進月歩

                            どこで指定してんだろ、と思って調べてみたメモ 環境 $ bin/rails -v Rails 5.2.2 概要 RSpecなどのテストにおいて、xxx_urlで生成されるurlのホスト名は www.example.com になる 例 たとえば自分のURLを生成してJSONとして返すコントローラーを作るとする class UsersController < ApplicationController def index render json: {url: users_url} end end routes.rbはこんな感じ Rails.application.routes.draw do resources :users, only: :index end これに対してrspecを書くと、以下のように書くとコケる require 'rails_helper' RSpec.describe

                              Railsでのテストにおいて、リクエストホスト名はデフォルトだと www.example.com - コード日進月歩
                            • Set Session in RSpec with Rails 7 API

                              I am trying to create a logic where a user gets an invitation from a group. If they signup via that invitation, the group id will be stored in the session and when they signup, they will be automatically added to the group as a member. I am using Devise for authentication. So I customized it like this: class Users::RegistrationsController < Devise::RegistrationsController def create super if @user

                                Set Session in RSpec with Rails 7 API
                              • 現場で使えるRSpecパターン集 for Rails App - MogLog

                                はじめに 検証環境、ライブラリ 基本方針 Request spec ステータスコードが xxx であること レスポンスボディに xxx が含まれていること データが新規作成されていること データが更新されていること データが削除されていること リダイレクトされること ファイルのダウンロードができること Model spec バリデーションにパスすること バリデーションエラーとなること バリデーションエラーとなり、期待するエラーが発生していること Job spec ジョブがエンキューされること ジョブが実行され、期待する動作をすること Mailer spec メール送信処理が実行すること 送り主(from)が期待通りであること 宛先(to)が期待通りであること タイトルが期待通りであること 本文が期待通りであること モック オブジェクトのメソッド呼び出しをモックする 期待するメソッドが呼び出

                                  現場で使えるRSpecパターン集 for Rails App - MogLog
                                • Rails engine with Rspec

                                  A Ruby on Rails Engine does not come with Rspec. The setup is simple which you can find below along with instructions for adding Factory Bot. Generate an engine Lets generate a new engine. We typically like to have an engines folder so we will generate our new engine there. rails plugin new engines/my_feature --mountable --skip-test --dummy_path=spec/dummy Include the --skip-tests option because w

                                    Rails engine with Rspec
                                  • Effective Testing with RSpec 3を読んだ - ストロングゼロは睡眠薬

                                    Amazonレビュー的な何か RSpec3自体の効果的な使い方が網羅的に紹介されている書籍です。 RSpecのバージョンは、3.6.0です どのように、RSpecでテストを書いていくかという具体的なテスト方法に関する内容より、しっかり調べていないと使わないようなオプションや機能などが紹介されていて、学ぶの多い書籍です。 はじめに、書籍の読み方が紹介されています。全15章のうち6章までが基礎的な内容のためそこまでは読むといいようです。 実務において、APIのテストをする機会があり、効果的なMockやstubの使い方がわかりませんでした。むしろ、MockやStub、正直に言うと、Test Doubleに関するあらゆる知識がありませんでした。書籍では、最後の3章にてRSpec Mocksについて解説しています。 13、14章を読むとTest Doubleに関する全体像がぼんやりと見えてきます。し

                                      Effective Testing with RSpec 3を読んだ - ストロングゼロは睡眠薬
                                    • RSpecのbefore/afterのパラメータをざっと表で書き表す - コード日進月歩

                                      パターンに関して把握してなかったのでメモ 環境 $ bundle exec rspec -v RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 説明 書き方 挙動 他の指定の実行順番 before(:suite) rspecの実行時に1回のみ、RSpec.configureの中でしか使えない 1 before(:context) describeやcontextなどの単位で1回だけ行われる 2 before(:example) 各example、itの実行前に行われる 3 after(:example) 各example、itの実行後に行われる 4 after(:context) describeやcont

                                        RSpecのbefore/afterのパラメータをざっと表で書き表す - コード日進月歩
                                      • Why I don’t enjoy RSpec all that much

                                        One of the reasons I prefer testing with Minitest is the dissatisfaction with my everyday RSpec work. Here are things I don’t like about typical RSpec test suites and how to fix them. Please take the post with a grain of salt. If you enjoy writing RSpec this way, keep enjoying it! Some things are personal, and it’s okay. Shared examples I think the shared examples feature deserves the first spot.

                                          Why I don’t enjoy RSpec all that much
                                        • 【SmartHRのQA連載:第3弾】ATDD導入と選択 - SmartHR Tech Blog

                                          はじめに みなさん、はじめまして! SmartHRのQAグループ所属のmachiです。 本記事は、「SmartHRのQA(品質保証)」連載企画の第3弾です。 SmartHRのQAグループはソフトウェアテストを中心に、メンバーのスキルセットやプロダクトの状況によって、柔軟かつ多岐にわたるアプローチで品質保証活動を担っている組織です。 今回はSmartHRにおけるATDD(受け入れテスト駆動開発)の取り組みについて、実際にATDDを行なっているYさんに話を聞きました。 インタビューされる人 : Y QAグループ所属 昨年から年末調整機能の開発プロジェクトに従事 今年からATDDを導入し、テストの拡充やスピードアップをはかっている インタビューする人 : machi Yと同じくQAグループ所属 従業員名簿機能、組織図機能、従業員サーベイ機能の開発プロジェクトに従事 ATDDに興味があるものの、な

                                            【SmartHRのQA連載:第3弾】ATDD導入と選択 - SmartHR Tech Blog
                                          • テスト中のオブジェクトに実際の動作をさせないで返り値を指定する - woshidan's loose leaf

                                            特定のオブジェクトにあるメソッドの中身を実行せず結果だけ返して欲しい場合 allowとreceiveを使ってスタブの指定をします。 allow(some_object).to receive(:method_name).and_return(return_value) 特定のクラスのインスタンス全てにあるメソッドの中身を実行せず結果だけ返して欲しい場合 allow_any_instance_of(ClassName).to receive(:method_name).and_return(return_value) 以下のようなコントローラのアクションに対するテストなどでテストコードではないところで生成するインスタンスに対して # コントローラのコード def index api_client = SomeApiClient.new(token) @result = api_client.

                                              テスト中のオブジェクトに実際の動作をさせないで返り値を指定する - woshidan's loose leaf
                                            • rspecでモックを使うときに気をつけていること

                                              スタブとは テストコード内で利用されるもの。 テスト対象のメソッドや処理から、別のメソッドを介してデータを取得したり加工したりする場合に、決まりきった値を返すように設定したものを指す。 class A def initialize @b = B.new end def hoge ... @b.fuga ... end end A#hoge のユニットテストを書く場合に、B#fuga の細かい挙動については知る必要がなく、A#hoge のテストをするに当たって都合のいい値さえ返してくれればいい。(もちろん B#fuga 別途ユニットテストを書く必要がある。) テストを記述する際に、そのテストで確認したい内容のために何か都合のいい値を返すように設定したものがスタブである。 モックとは モックもテストコード内で利用されるもの。 あるメソッドを呼び出す際に、その引数や呼びされる回数を検証するために

                                                rspecでモックを使うときに気をつけていること
                                              • 基礎からやり直す Rails RSpec - Qiita

                                                最近は Controller specs の代わりに、より広範囲をテストする Request specs が用いられるのが主流です(両者の違いについてはこちら)。 RSpec チームからも Request specs を使うことが推奨されています(2016年:詳細はこちら)。 For new Rails apps: we don't recommend adding the rails-controller-testing gem to your application. The official recommendation of the Rails team and the RSpec core team is to write request specs instead. また、ビジネスロジックをサービスオブジェクトに切り出す場合などは、他のユニットテストと同様に、rspec/ser

                                                  基礎からやり直す Rails RSpec - Qiita
                                                • ActiveJob へのキューインの spec - タケユー・ウェブ日報

                                                  まとめ ActiveJob::Base.queue_adapter = :test を使うと、 ActiveJob::Base.queue_adapter.enqueued_jobs にジョブが入る have_enqueued_job マッチャーでジョブが入っていることを expect する サンプルコード it 'enqueues PaymentIntentSuccessedJob' do ActiveJob::Base.queue_adapter = :test event = StripeMock.mock_webhook_event('payment_intent.succeeded', customer: customer.id) expect { post "/webhook", params: event.to_h, as: :json }.to have_enqueued_

                                                    ActiveJob へのキューインの spec - タケユー・ウェブ日報
                                                  • Rspecの便利なオプション - Qiita

                                                    rspecを動かす際には様々なオプションを付けて動かすことができます。例えば、モデルのspecだけ動かしたい場合は、rspec spec/models/などとすればmodelsの配下にある_spec.rbのテストが走ります。 オプションを参照したい場合は、 で参照できます。 この記事では、便利だと感じたRSpecを動かすためのオプションをピックアップして書き連ねて行こうと思います。 この記事を書こうと思った理由 最近、この本を読んで非常にまとまっていて読みやすいなと思いました。しかし、この本はまだ翻訳がなくて、認知度もあまりないのかと思いました。 なので、この本に載っていることを少しでも紹介して、本の紹介とともに、自分に対しての備忘録としてもいいんじゃないかと思い、書こうと思いました。 Effective Testing with RSpec 3 フィルタリングオプション フィルタリングオ

                                                      Rspecの便利なオプション - Qiita
                                                    • 【Rails】GithubとCircleCIを連携してcommit時にrspecとrubocopを動かす - Qiita

                                                      rubocopに必須のセットアップは、特にないです。ただ、 .rubocop.yml は必須です。もし、迷うなら、 railsの .rubocop.yml をコピペ or 参考に作るといいです。 なお、自分のは以下の通りです。 AllCops: Exclude: - "tmp/**/*" - "config/initializers/*" - "vendor/**/*" - "db/schema.rb" - "node_modules/**/*" - "db/migrate/*.rb" - "bin/*" DisplayCopNames: true TargetRubyVersion: 2.6.0 Rails: Enabled: true Style/AndOr: EnforcedStyle: conditionals Style/AsciiComments: Enabled: false

                                                        【Rails】GithubとCircleCIを連携してcommit時にrspecとrubocopを動かす - Qiita
                                                      • RSpec内でcontrollerを定義して、concernのメソッドをテストする - コード日進月歩

                                                        俗に言うAnonymousControllerという手法です。 環境 $ bundle exec rspec --version RSpec 3.8 - rspec-core 3.8.0 - rspec-expectations 3.8.2 - rspec-mocks 3.8.0 - rspec-rails 3.8.1 - rspec-support 3.8.0 書き方 下記のようなconcernがあったとする module Targetable extend ActiveSupport::Concern def public_na_method true end end publicメソッドを試したい場合は下記のように書く(helperは環境に応じて適宜書き足してください) RSpec.describe "Targetable", type: :controller do control

                                                          RSpec内でcontrollerを定義して、concernのメソッドをテストする - コード日進月歩
                                                        • RSpecテスト環境 設定 メモ _φ(・・*) - Qiita

                                                          gem 'rails' gem 'mysql2' gem 'mongoid', '4.0.0' group :development do gem 'guard-rspec' # ファイルが変更されたらRsepcを自動実行 end group :test do gem 'database_cleaner', '~> 1.3.0' # テスト実行後にDBをクリア gem 'capybara', '~> 2.4.3' # ブラウザでの操作をシミュレートしてテストができる gem 'simplecov', :require=>false # テストカバレッジ(テストカバー率) end group :development, :test do gem 'rspec-rails', '~> 3.1.0' # Rails用機能を追加するRSpecラッハー gem 'factory_girl_rails

                                                            RSpecテスト環境 設定 メモ _φ(・・*) - Qiita
                                                          • RSpec: スタブのメソッドの引数にリテラル以外を渡すときは素直に be_an_instance_of を使ったほうがいい|TechRacho by BPS株式会社

                                                            2023.03.09 RSpec: スタブのメソッドの引数にリテラル以外を渡すときは素直に be_an_instance_of を使ったほうがいい オブジェクトの同一性にこだわらなければ、スタブのメソッドの引数には be_an_instance_of を使ったほうがいい 特にgemが返すオブジェクトとの同一性比較は無理にやらないほうがいい 実例 Herという、RESTful APIで得たリソースをRubyオブジェクトにマッピングするgemがあります。 これを使って外部APIを叩きます。 その結果としてHerがパースできないbodyが返ってきた場合、特定のSlackチャンネルに通知するという rescue_from の処理を書きます。 class ApplicationController < ActionController::Base rescue_from Her::Errors::P

                                                              RSpec: スタブのメソッドの引数にリテラル以外を渡すときは素直に be_an_instance_of を使ったほうがいい|TechRacho by BPS株式会社
                                                            • RspecでマスターデータをDBに入れておきたい - chimo - Medium

                                                              おはようございます。今日もぼっちで開発です。 最近はRspecと仲良くなろうと必死です。 FactoryBotの使い方にも少し慣れてきたのですが、マスターデータをどうやって投入しよう、という新たな壁にぶつかりました。 そうかseedを使おう!と思って設定してみた時のメモを残しておきます。 まず、seedファイルを作成します。development環境でもseedを使いたいので、test環境用のseedを読み込めるようにします。 db/seeds.rbload(Rails.root.join('db', 'seeds', "#{Rails.env.downcase}.rb"))db/seeds/test.rb今回はcsvファイルを用意してcalendarにデータを入れていくことにします。 require "csv"CSV.foreach('db/csv/calendars.csv') do

                                                              • rspec-openapiを導入した話 - Studyplus Engineering Blog

                                                                こんにちは、サーバーサイドグループの五十嵐です。 今年の4月に弊社に転職して初めて技術ブログを書きます。 今回はAPIドキュメントの作成ツールとしてGemrspec-openapiを導入した話について書いてみます。 弊社では以前からOpenAPIを導入しドキュメント管理を行なってきました。 しかし、OpenAPIを導入する前からあったAPIに対するドキュメントは不足していたり内容が不十分なものもありました。 このようなツールは導入当初はモチベーションが高くても、年月が経つ内にモチベーションが低下したり、メンバーが変わることで存在自体なかったことになったりはよくあることだと思います。 実際にOpenAPIは全て手で書こうとするとはっきり言って非常にめんどうで、そこそこ工数もかかります。 API新規作成時は自分で必要な情報がわかっているので書きやすいですが、既存のAPIで新しくドキュメントを作

                                                                  rspec-openapiを導入した話 - Studyplus Engineering Blog
                                                                • RailsチュートリアルでRSpecを使用する前に知っておきたいこと - Qiita

                                                                  はじめに こんにちは!先日Railsチュートリアルを完走したばかりの初心者です。 私はRalisチュートリアルを開始する際にRSpecを使用すべきか悩みました。 本記事では私が当時知りたかったRSpecについての情報をまとめております。 導入を検討されている方のお役に立てればと思います。 ※本記事ではRSpecの導入方法については記載しておりません。 導入方法をお探しの方は以下の記事が参考になるかと思います。 ○RailsアプリへのRspecとFactory_botの導入手順 RSpecとは RSpecとは、RubyでBDD (ビヘイビア駆動開発) を実施するためのテストフレームワークです。 プログラムのふるまいを記述するためのドメイン特化言語(DSL)を提供します。 簡単に言うとRSpecは「プログラムのふるまいをコードで記述して、正しく動作しているか確認するテストフレームワーク」です。

                                                                    RailsチュートリアルでRSpecを使用する前に知っておきたいこと - Qiita
                                                                  • FactoryBot作成のベストプラクティス!? - Blogメモφ(..)

                                                                    RSpecを結構書いてますが、テストを書く上で、FactoryBotが整備されていると楽ですよね。 ただ、最低限でも過剰でも、テストケースが漏れたりします。 また、無駄にINSERTされて、テストが遅くなったりする事もあります。 改めて整理する為に、こう書くのが良いだろうと思うベストプラクティス!?をまとめてみました。 単体で作成できるように作る 必須項目は全て埋める。できるだけユニークな値となるように 必須のリレーションはassociationで作成する 任意項目もできるだけ埋める traitでベースのfactoryを上書きして共通化する traitをfactory間で共有して共通化する 最後に(まとめ) 単体で作成できるように作る これは基本だと思います。rails cで、一時的に作りたい場合にも役立ちます。 必須項目は全て埋める。できるだけユニークな値となるように Request S

                                                                    • 【Rspec】ログイン機能をモジュールで共通化しテストコードをDRYにする - Qiita

                                                                      手順 1.rails_helperを編集 2.supportディレクトリにてファイルを作成 3.login機能の記入 4.メソッド使用例 1.rails_helperを編集 Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f } # 23行目のコメントアウトを外す ---省略--- RSpec.configure do |config| # 中略 config.include LoginSupport end ('spec', 'support', '**', '*.rb') spec/support/◯◯/△△.rbのファイルを読み込むという設定。 RSpec.configure do |config|下に作成したファイルを読み込むという記述をする。 今回はLoginSupport

                                                                        【Rspec】ログイン機能をモジュールで共通化しテストコードをDRYにする - Qiita
                                                                      • 【RSpec】コードの重複を回避することができるit_behaves_likeメソッドの使い方について解説|TechTechMedia

                                                                        it_behaves_likeメソッドとはit_behaves_likeメソッドとは、shared_examplesと組み合わせることでテストケースを自在に埋め込むことができるメソッドです。また、it_behaves_likeメソッドは新しいcontextを生成し、そこにテストコードを埋め込む形になります。 使い方では実際に使い方を見てみます。 it_behaves_likeメソッドとshared_examplesは以下のように使用することができます。 RSpec.describe User, type: :model do RSpec.shared_examples 'validation' do it '必須であること' do expect(user.errors[:name]).to eq(['を入力してください']) end end describe 'Hoge' do let(:

                                                                          【RSpec】コードの重複を回避することができるit_behaves_likeメソッドの使い方について解説|TechTechMedia
                                                                        • Rails + RSpecにて、changeマッチャまわりをいろいろ試してみた - メモ的な思考的な

                                                                          前回に続き、RSpecのchangeマッチャに関する記事です。 値の変化を検証する時は change マッチャが便利です。 ただ、「こんな時どうするんだっけ」と調べることが多かったことから、 change マッチャまわりをいろいろ試してみたときのメモを残します。 目次 環境 ドキュメントについて メソッドスタイルとブロックスタイル 増減を確認する(by, from, to) 増減の幅(最小・最大)を検証 (by_at_least, by_at_most) 変化がないことを検証 (not_to + change) andとchangeの組み合わせ 2つとも変化あり (change and change) 1つは変化あり、もう1つは変化なし (and + define_negated_matcher) changeとreloadについて 更新のあったモデルのインスタンスを検証するときは rel

                                                                            Rails + RSpecにて、changeマッチャまわりをいろいろ試してみた - メモ的な思考的な
                                                                          • RSpecで現在時刻を変更してテストしたいときはtravel_toが便利 - 動かざることバグの如し

                                                                            環境 rails 5.2 やりたいこと RSpecでいろいろテストを書いているのだが、日時が絡むテストが非常に面倒である。例えば一定時間経つと挙動が変わるとか、〜年より前、後で振る舞いが変わるテスト、など。 が、さすがRails、travel_toというヘルパーメソッドがあった。 travel_to 何ができるのかというと、現在時刻を偽装できる、つまりタイムトラベル。。。! 使い方 デフォルトでは使えないのでインクルードする。rails_helper.rbに以下追記 RSpec.configure do |config| config.include ActiveSupport::Testing::TimeHelpers end で、以下のように使える。 require 'rails_helper' RSpec.describe User, type: :model do describe

                                                                              RSpecで現在時刻を変更してテストしたいときはtravel_toが便利 - 動かざることバグの如し
                                                                            • RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita

                                                                              はじめに:これは何? 僕がコードレビューしていて、「ん?いやいや、こんな書き方しちゃダメだよ!」と思ったコード例をまとめた記事です。 この記事でフォーカスするのはRSpecのDSLを適切に構築してないケースです。 ネタが増えたらまた追記するので、気になる方はこの記事のストックをお願いします!(記事の更新時に通知欄でお知らせします) それでは以下が本編です👇 トップレベルのdescribeを2つ以上作らない テストコードを読む際に、読み手は「当然ファイル全体が大きなひとつのdescribeブロックになっているはず」と信じ込んでいるので、予想に反するネスト構造になっていると脳内の予想と実際の実行結果が異なって混乱します。 以下のように大きなdescribeブロックで囲んで1ファイルにつきトップレベルのdescribeが1つだけになるようにしましょう。

                                                                                RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita
                                                                              • RSpecのexpectとis_expectedの挙動の違いについて - indilog

                                                                                subject(:actual_object) { ... } it { is_expected.to eq(expected_object) } と subject(:actual_object) { ... } it { expect(actual_object).to eq(expected_object) } では挙動が異なるという話 上の方を actual_object と expected_object を同じ属性などを定義した状態で比較しようとすると、 Compared using equal?, which compares object identity, but expected and actual are not the same object. Use expect(actual).to eq(expected) if you don't care about o

                                                                                  RSpecのexpectとis_expectedの挙動の違いについて - indilog
                                                                                • Rspecを使ってRailsでテストしてみた話 - 生存戦略型プログラミング

                                                                                  Rspecを用いてRailsでテストを書いてみたのでそれの備忘録。 テストについてもよくわかっていなかったのでまとめてみた。 テストについて テストは大きく分けて下記の三つである。 ユニットテスト ファンクションテスト インテグレーションテスト ユニットテスト(単体テスト) プログラムを構成するできるだけ小さい単位(ユニット)の機能に対して正しく動作するかどうかを検証するテスト。 関数やメソッドに対して行われることが多く、関数やメソッドのバグを取り除く目的がある。 railsの場合ではモデルに対して行うテスト。 ファンクションテスト(機能テスト) システム開発の際に行われるテストのうち、ユーザー側から要求された機能をシステムが満足しているかどうかを検証するテスト。 ユーザーから渡されたデータと処理の結果を比較するブラックボックステストなど中でどんな処理をされてるかなどのテストというよりは要

                                                                                    Rspecを使ってRailsでテストしてみた話 - 生存戦略型プログラミング