RSpec

rspec-parameterizedにて、factory_botのtraitを動的に指定する

以前、factory_botの traitを使ったことがありました。 Rails + factory_botで、sub factoryやtrait・callbackを使って関連データを生成してみた - メモ的な思考的な そんな中、 rspec-parameterized を使ってテストを書くときに、動的に trait を指定してデ…

rspec-parameterizedで、letやlet!定義された変数の値を上書きする

gem rspec-parameterized は、RSpecでパラメタライズドテストを書くときに便利です。 https://github.com/tomykaira/rspec-parameterized 最近だと、 table syntaxを使っていない場合は rspec-parameterized-core を使うことで native extensionへの依存をな…

Rails + RSpecで、引数が必要なRake Taskのテストコードを書いてみた

Rails + RSpecにて、Rake Taskのテストコードを書く機会がありました。 ただ、引数が必要なRake Taskのテストを書くときに悩んだことがあったため、メモを残します。 目次 環境 引数なしのRake Taskをテストする 引数ありのRake Taskをテストする [] を使っ…

Rails + RSpecにて、changeマッチャまわりをいろいろ試してみた

前回に続き、RSpecのchangeマッチャに関する記事です。 値の変化を検証する時は change マッチャが便利です。 ただ、「こんな時どうするんだっけ」と調べることが多かったことから、 change マッチャまわりをいろいろ試してみたときのメモを残します。 目次 …

RSpec 3.12 + rspec-rails 6.0.2にて、change + have_attributesマッチャを使うとエラーになるため、回避策を試してみた

RSpecの change マッチャを使うと、処理前後における値の変化を検証できます。 https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/change/ 例えば # == Schema Information # # Table name: favorites # # id :integer not null, prim…

Rails + factory_botで、sub factoryやtrait・callbackを使って関連データを生成してみた

Rails + RSpec + factory_bot にて、あるモデルの関連データを生成する方法を調べたところ、factory_botのGETTING_STARTEDにいろいろな方法が記載されていました。 https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md そこで、GETTING…

Pundit + Rolify を使って、Rails製APIアプリでロールによる認可制御を行ってみた

Rails + ロールでの認可制御を調べたところ、以下のページに認可制御のgemがまとまっていました。 Category: User Authorization - The Ruby Toolbox まずは一番Githubのstarが多いgemからみてみようということで、 Pundit をさわってみることにしました。 v…

Rails + RSpecで、メモ化しているメソッドをモックしたら RSpec::Mocks::ExpiredTestDoubleError になったので、調べてみた

Rubyでメモ化したい時、 ||= を使って書くことがあります *1。 以下のコードであれば、クラスメソッド twitter を使って、クラスインスタンス変数 @twitter に Api::External::Twitter.new のインスタンスを設定・メモ化しています。 class Api::External::C…

Ruby の WebMock では、クエリ文字列も考慮して stub_request する

外部サイトへのアクセスが発生する、 Railsアプリがあるとします。 このRailsアプリに対するテストコードでは、外部サイトへのアクセスが発生しないよう、 WebMock を使うのが便利です。 bblimke/webmock: Library for stubbing and setting expectations on…

Rails + Active Adminで、Active Admin向けのテストコードを request spec で書いてみた

Active AdminのControllerに手を加えた際、テストコードがほしくなりました。 Wikiを見たところ、controller specでの実装でした。 Testing your ActiveAdmin controllers with RSpec · activeadmin/activeadmin Wiki ただ、現在では controller spec よりも…