BackEnd

RSpecの個人的Tips集〜その1〜

投稿日:2018年1月10日 更新日:

はじめに

みなさん、テストコードは書かれているでしょうか?
私も極力書くよう心がけているつもりですが、忙しかったり、難易度が高いテストだとすぐにサボってしまいます。

私は主にRSpecを使用していますが、実は便利なメソッドがたくさんあります。
今回は備忘録を兼ねて記事にまとめたいと思います。
参照するRSpecのバージョンは3.7です。

その1として連載形式にしたいと思っていますが、いつ「その2」を書くかは未定です(笑)

テストコードの実行をスキップする

大きな変更があり、既存のテストコードが使えなくなる事があると思います。
そんなときにエラーが出っ放しも気持ち悪いので、実行時にスキップさせます。
ファイル単位でスキップさせる場合は、下記のskipを使用すると良いと思います。

Skip examples

テスト単位でスキップさせるならば、テスト内でskipを使用します。

なお、他にもpendingという方法があります。
こちらの記事に記載がありますが、外的要因による一時的なテスト失敗は、pendingの方が良さそうです。

共通のテストコードを用意する

例えばモデルのconcernなどでモジュールを用意し、それをモデルにincludeする事があります。
モジュールの方でテストしても良いのかもしれませんが、テストを共通化し、それを各モデルのテストに取り込みたいと思います。
そんなときにも便利なメソッドがあります。

Shared examples

まずは共通化したいテストを作成します。

それを必要なSpecに取り込みます。

なお、it_should_behave_likeの前にletbeforeの処理を置いておけばそちらを評価してくれます。

外部APIの返却値をスタブにする

外部APIを使用した処理をテストする場合、返却値をスタブに置き換えた方が良いかと思います。

下記のようなツイッターにツイートするメソッドがあったとして、
(TwitterのAPIについてはちゃんと確認してないのでよしなに解釈してください。。。)

Specの方ではあらかじめこのメソッドについてスタブを置きます。

クラスメソッドの場合は、allowで良いですが、インスタンスメソッドの場合はallow_any_instance_ofを使用します。

RSpec Mocks 3.7

さいごに

簡単なTips集ですが、まとめてみました。
また、私も最近知ったのですが、テストレコードなんかを作成するのに最適なFactoryGirlですが、FactoryBotに名前が変わるそうですね。
こちらの記事で経緯が説明されておりました。

thoughtbot/factory_bot
【翻訳】”Factory Girl”が”Factory Bot”に変わった理由(と移行手順)

page_footer_300rect




page_footer_300rect




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Vue.js+TypeScriptな環境整備

1 はじめに2 vue-cliのインストール3 プロジェクトの作成3.1 機能の選択3.2 シンタックスの選択3.3 CSSプリプロセッサの設定3.4 Unit test3.5 E2E test3.6 ...

markdownで書けるドキュメントツールのGitbookを試す

1 はじめに2 Gitbookとは3 nvm4 node.jsインストール5 Gitbook導入5.1 インストール5.2 初期化5.3 ローカルでブラウザから確認6 作成と編集6.1 見出し編集7 ...

【Ruby Advent Calender 2017】Rubyでスクレイピングをしてみる【11日目】

1 はじめに1.1 概要2 仕様3 ソースコード4 使用したモジュール、Gem5 対象ページを取得6 XPATHから目的のものを抜き出す7 次のページのリンクを取得する8 他のサイトの記事でも試してみ ...

rails

Railsでの非同期処理とDelayed Job

1 はじめに2 Active Job2.1 Active Jobの役割2.2 ジョブを作成する2.3 ジョブをキューに登録する2.4 コールバック2.5 例外3 Delayed Job3.1 設定3. ...

rails

Rails5で出力される「alias_method_chain is deprecated.」について

1 はじめに2 alias_method_chainとは3 Module#prependとは4 とりあえず、DEPRECATION WARNINGの出力をなくしたい5 さいごに はじめに 直近のプロジ ...

フォロー

follow us in feedly

page_side_300rect

2018年1月
« 12月 2月 »
 123456
78910111213
14151617181920
21222324252627
28293031 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。