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”に変わった理由(と移行手順)

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:


comment

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

CAPTCHA


関連記事

[Dialogflow + CF] アクア様が罵倒してくれたり天気を教えてくれるSlackボットを作る

1 はじめに2 Dialogflowの準備2.1 プロジェクトを作る2.2 Intentを作る2.3 試してみる2.4 WELCOME Intentを作る3 Slackボットを作る4 名前を答える5 ...

Docker上のLaravelのログをFluentdに出力する

1 はじめに2 環境3 Fluentdについて4 目的5 Fluentd本体はdocker-composeで導入5.1 fluentd5.2 db5.3 app5.4 web6 Laravelからログ ...

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

laravel logo

Laravelのブラウザテスト「Dusk」をシンプルなCRUDで始めてみよう

1 はじめに2 Laravel Duskのセットアップ3 新規登録のテスト3.1 テスト対象となるコード3.2 Duskのテストコード3.3 テストの実行4 更新のテスト4.1 テスト対象となるコード ...

laravel logo

Laravelのブラウザテスト「Dusk」で非同期で重たい処理のテストを実装してみよう

1 はじめに2 JavaScriptの式で待機する2.1 テスト対象となるコード2.2 Duskのテストコード3 DOM要素の表示を待つ3.1 テスト対象となるコード3.2 Duskテストコードの実装 ...

フォロー

follow us in feedly

blog-page_side_responsive

2018年1月
 123456
78910111213
14151617181920
21222324252627
28293031 

アプリ情報

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