Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

RSpec

RSpec | RSpecのテストレポートをtsv形式で出力してみる

概要 RSpecのテストレポートをtsv形式で出力してみる 詳細 RSpecのテストレポートをtsv形式で出力してみる 仕様 メソッド、ケース番号、ケース名、成功・失敗をtsv形式で出力する。 tsvにしたのはExcelにそのままはれるから。 構成 │ .rspec │ Gemfile │ ├─l…

RSpec | matcherの戻り値に応じて後処理を行う

概要 matcherの戻り値に応じて後処理を行う 詳細 matcherの戻り値に応じて後処理を行います。RSpecのmatcherは成功時にtrue、失敗時にnilを返すので それを判断基準に処理を分岐して、Procを実行させてみます。 前提 rspec_piccoloを利用します 構成 $ tree …

Ruby | リスト構造のテストケーステンプレートを作成するRSpecPiccolo gemを公開しました

概要 リスト構造のテストケーステンプレートを作成するRSpecPiccolo gem 内容 リスト構造のテストケーステンプレートを作成するRSpecPiccolo gemを公開しました。・1ファイル=1クラスのテスト ・1contextで1メソッドのテスト ・1context内の複数ケースはリ…

RSpec | カスタムマッチャーを作成する

概要 カスタムマッチャーを作成する 内容 カスタムマッチャーを作成します。 仕様 あるクラスのフィールドに対して、指定したマップ内のキーのフィールドが バリューの値を持っているか全比較し、全て保持していればマッチ成功とする。 主に登録処理、編集処…

Capybara | Rails、RSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定

概要 Rails、RSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定 内容 kickstart設定 kickstart.cssのimportをコメントコメントアウトして無効化。 /*--------------------------------- IMPORTS ---------------------------…

Ruby | DatabaseCleanerでテストデータクリア

概要 DatabaseCleanerでテストデータクリア 内容 DatabaseCleanerでテストデータクリアします。FactoryGirl+Capybara(+ブラウザテスト)などの構成を利用する際に、 FactoryGirlとブラウザ側が別トランザクション管理になるため、 transactionを有効にし…

RSpec | Simple-Covでカバレッジの計測

概要 SimpleCovでカバレッジレポートの出力 内容 SimpleCovでカバレッジレポートの出力します。 導入 Gemfileに以下を追加 gem "simplecov", "~> 0.7.1" spec_helper.rbに下記を追加 require "simplecov" SimpleCov.start "rails" 確認 bundle exec rake spec…

RSpec | パラメータ化テストのDSL化

概要 パラメータ化テストのDSL化 詳細 下記記事のRSpecでパラメータ化テストをDSL化します。 RSpec | パラメータ化テスト http://d.hatena.ne.jp/tbpg/20130715/1373901728 仕様 下記のような記載でテストケースのパラメータ群を記載できます。 スペース部分…

RSpec | spec/supportにサポートファイルを配置してテストの共通化をする

概要 spec/supportにサポートファイルを配置してテストの共通化をする 内容 support配下はspec_helperで読み込み対象に設定しているため、他のspecでrequireしなくても利用可能です。 逆に言うと、support以外のフォルダにファイルを保存してrequireもしたい…

RSpec | 例外の検証

概要 例外の検証 内容 例外の検証時はブロック+raise_errorメソッドで検証します。 lambda {test_method(args)}.should raise_error(error_class) サンプル 実装 # encoding: utf-8 class Hoge def hoge(error) raise HogeError.new if error end end class…

RSpec | パラメータ化テスト

概要 パラメータ化テスト 詳細 RSpecでパラメータ化テストを行う サンプル 仕様 漢数字の一〜十を数値として扱うようにStringクラスを拡張します。 ・漢数字かどうかの検証 ・漢数字から数値への変換 ・漢数字同士の加算 を実装し、それをパラメータ化テスト…

RSpec | スタブ

概要 スタブ 詳細 スタブはメソッド呼び出し時に特定の値を戻します。 サンプル 引数で指定されたオブジェクトから生成された乱数と 内部で生成された乱数を元にしたテキストを返却するクラスのテストを行うとします。 テスト対象 # encoding: utf-8 class H…

RSpec

概要 Ruby用BDDフレームワークRSpecについて。 詳細 基礎 項目 内容 rspec-core describe/context/it/example/specify http://d.hatena.ne.jp/tbpg/20140415/1397569471 rspec-core shared examples http://d.hatena.ne.jp/tbpg/20140415/1397569770 metadat…

RSpec | モック

概要 モック 詳細 モックは特定の引数でメソッド呼び出し時に特定の値を戻します。 スタブは単純に特定の値を返却するのに対し、モックは特定のコンテキストに応じた値を返却します。 サンプル 引数で指定されたオブジェクトから生成された乱数と 内部で生成…

書籍 RSpec Book | Hello RSpec

パンくずリスト 書籍 RSpec Book Hello RSpec 概要 Hello RSpec 内容 RSpecでHello Worldします。 RSpecのテストは規約として「*_spec.rb」とする必要があります。 テストコード hello_hoge_spec.rb # encoding: utf-8 require_relative "../open_classes.rb…

書籍 RSpec Book | TDD,BDD,RSpec,Cucumber,BDDのサイクルに関して

パンくずリスト 書籍 RSpec Book TDD,BDD,RSpec,Cucumber,BDDのサイクルに関して 概要 TDD,BDD,RSpec,Cucumber,BDDのサイクルに関して 内容 TDD テスト対象のプログラムを書く前にテストを書く、という開発手法。 BDD テスト対象の振る舞い=Behaviorに焦点を…

書籍 RSpec Book

概要 書籍 RSpec Bookに関するメモ。 全てをカバーせず、自分の中で新たに学ぶことやまとめ直しておきたいことのみを抜粋します。 また、例示するサンプルも写経せずに出来るだけ自分で考えたサンプルにします。 各章 章 題目 概要 1 概要 TDD,BDD,RSpec,Cuc…

書籍 RSpec Book | Hello Cucumber

パンくずリスト 書籍 RSpec Book Hello Cucumber 概要 Hello Cucumber 内容 CucumberでHello Worldします。・対象プロジェクト用のルートフォルダを作成する。仮にhoge。 ・hoge配下にfeatures,specの2フォルダを作成する。 ・任意の名前で*.featuresファイ…