use_after_action
tests that a after_action callback is defined in your controller. (Aliased
as use_after_filter.)

use_around_action
tests that a around_action callback is defined in your controller. (Aliased
as use_around_filter.)

use_before_action
tests that a before_action callback is defined in your controller. (Aliased
as use_before_filter.)

Independent Matchers

delegate_method
tests that an object forwards messages to other, internal objects by way of
delegation.

Installation

RSpec

Include the gem in your Gemfile:

group:testdogem'shoulda-matchers',require:falseend

Then require the gem following rspec-rails in your rails_helper (or spec_helper
if you're using RSpec 2.x):

require'rspec/rails'require'shoulda/matchers'

Test::Unit

shoulda-matchers was originally a component of Shoulda, a meta-gem
that also provides should and context syntax via
shoulda-context. For this reason you'll want to include this
gem in your Gemfile instead:

group:testdogem'shoulda'end

Non-Rails apps

Once it is loaded, shoulda-matchers automatically includes itself into your test
framework. It will mix in the appropriate matchers for ActiveRecord,
ActiveModel, and ActionController depending on the modules that are available at
runtime. For instance, in order to use the ActiveRecord matchers, ActiveRecord
must be present beforehand.

If your application is written against Rails, everything should "just work", as
shoulda-matchers will most likely be declared after Rails in your Gemfile. If
your application is written against another framework such as Sinatra or
Padrino, you may have a different setup, so you will want to ensure that you are
requiring shoulda-matchers after the components of Rails you are using. For
instance, if you wanted to use and test against ActiveModel, you'd say:

gem'activemodel'gem'shoulda-matchers'

and not:

gem'shoulda-matchers'gem'activemodel'

Generating documentation

YARD is used to generate documentation, which can be viewed online.
You can preview changes you make to the documentation locally by running

yarddoc

from this directory. Then, open doc/index.html in your browser.

If you want to see a live preview as you work without having to run yard over
and over again, keep this command running in a separate terminal session: