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


関連記事

rails

私たちのFactoryGirlとRspecの使用ルール その1

1 はじめに2 そもそもなぜ基本ルールなどを作成しようとしたのか?3 Rspec編3.1 describe、context、itの階層で使用する3.2 10個以上のテストレコードを作成したい場合は、ト ...

rails

Railsの低レベルキャッシュを使ってみた

1 はじめに1.1 環境2 ドキュメント3 準備3.1 configの確認3.2 キャッシュストア4 使ってみる4.1 #read、#write、#delete4.2 #fetch4.3 オプション4 ...

Go言語

Go言語で使えるORMライブラリ

1 はじめに2 ORMライブラリ2.1 GORM2.2 SQLBoiler3 GORMを使ってみる3.1 導入3.2 migration3.3 insert3.4 select3.5 update3. ...

rails

Railsで複合主キーのテーブルを扱う

1 はじめに1.1 前提条件2 実装例2.1 config2.2 マイグレーション2.3 モデル3 さいごに はじめに RailsでWebサービスを開発する際のDB設計では基本的にidが主キーになると ...

【Git】マージコミットを消したい

1 はじめに2 例えばこんなことってないでしょうか?3 マージコミットを消す4 さいごに はじめに こんにちは、tonnyです。 今回はGitのケーススタディ的なものを書きたいと思います。 反面教師と ...

フォロー

follow us in feedly

AppLink

英語

page_side_300rect

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

アプリ情報

目標を達成したい方を応援する、TODOアプリもリリースしております。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。