Railsのテストでshoulda-matchersを使う

Rspecのテストでshoulda-matcherを使うとテスト結果の確認が楽。
なので、使い方をメモっておくために、まずはcontroller側のサンプルを載せる

  1 require 'spec_helper'
  2
  3 describe AlbumsController do
  4   fixtures :users
  5   fixtures :albums
  6   fixtures :photos
  7
  8   describe "albums list" do
  9     context "index method" do
 10       before do
 11         @user = User.find(1)
 12         controller.stub(:current_user) { @user }
 13         get :index
 14       end
 15       it { expect(@user.albums).not_to be_nil }
 16       it { expect(@user.albums.size).to eql(2) }
 17       it { expect(render_template('index')) }
 18       it { expect(render_with_layout('album')) }
 19       it { expect(respond_with(200)) }
 20       # it { expect route(:get, '/albums').to('albums#index') }
 21     end
 22   end
 23
 24   describe "album list(guest) " do
 25     context "guest_user_show method" do
 26       before do
 27         #        @user = User.find(1)
 28         #        controller.sutb(:current_user) { @user }
 29         @album = Album.find(1)
 30         get :guest_user_show , id: 1
 31       end
 32       it { expect(@album).not_to be_nil }
 33       it { expect(render_template('guest_user_show')) }
 34       # it { expect route(:get, '/albums/1/guest_user_show').to('albums#guest_user_show', id: 1) }
 35     end
 36   end
 37 end