酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Rails-rspecのマッチャ(matchers)一覧と便利機能の紹介

Railsのコントローラやビューなどのテストを助けてくれるrspec-railsのマッチャ(matcher)の一覧を作成しました。最近読んで感動したリーダブルコードで、「標準のライブラリをしっかり活用することは、プロジェクトを小さく保つためにとても大切」とありました。見習って理解に努めます!

rspec/rspec-rails · GitHub


マッチャー一覧

マッチャー 意味・機能
expect(response).to render_template(*args) responseがargで指定したテンプレートを描写することを期待
expect(response).to redirect_to(destination) responseがdestinationにリダイレクトすることを期待
expect(object).to be_a_new(expected) objectがexpectedであることと新規レコードであることを期待
{ :get => “path” }.should route_to(expected) Getでpathにアスセスした場合、expectedにルーティングすることを期待
{ :get => “path” }.not_to be_routable Getでpathにアスセスした場合、ルーティングが存在しないことを期待

rails-rspecの便利機能

[Controller] render_views

コントローラのRSpecでViewを描写したいときにrender_viewsをセットします。render_viewsをセットしないほうが、テストの実行時間は短くなりますが、Viewにあるバグを取りこぼす可能性があります。ケース・バイ・ケースでrender_viewsを使って下さい。

1
2
3
4
require 'spec_helper'
describe WidgetsController do
  render_views
  # ...

[Controller] Assigns

コントローラのインスタンス変数に代入されたオブジェクト(@xxx)を参照するために使います。

1
2
get :index
expect(assigns(:widgets)).to eq(expected_value)

[View] Assigns(key, val)

ビューで使うインスタンス変数に値をセットするために使います。

1
2
assign(:widget, stub_model(Widget))
render

[View] rendered

renderedは描写されたビューを表します。

1
2
render
expect(rendered).to match /Some text expected to appear on the page/

本家のサイトの説明は僕の記事とは比較にならないほどわかりやすいですw もしよかったら本家のサイトも是非覗いてみて下さい^^

rspec/rspec-rails · GitHub

便利なshoulda-matchersのマッチャ一覧

便利なshoulda-matchersのマッチャ一覧の紹介は、拙作のRSpecがさらに捗る shoulda-matchers のマッチャ 一覧をご参照下さい!

rspecの標準マッチャ一覧

rspecの標準マッチャの一覧は、拙作のRSpecの標準matchers(マッチャー)一覧をご参照下さい!

Special Thanks

rspec/rspec-rails · GitHub

Rspec Rails cheatsheet (include capybara matchers)

Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)

RSpecでRailsのテストをしてみるテスト。 | Ginpen.com

: Spec::Rails::Matchers [RDoc Documentation]

変更来歴

01/16 23:10 shoulda-matchersのマッチャ一覧の紹介を追加

おすすめの書籍