Fetching contributors…
Cannot retrieve contributors at this time
57 lines (33 sloc) 2.59 KB


Mocha is a library for mocking and stubbing using a syntax like that of JMock.

It can be used with many testing frameworks e.g. Test::Unit, RSpec, test/spec, expectations, Dust, MiniTest and even JtestR.

Mocha provides a unified, simple and readable syntax for both traditional mocking and partial mocking.

Mocha was harvested from projects at Reevoo by me (James) and my (then) colleagues Ben, Chris and Paul.


Install the latest version of the gem with the following command…

$ gem install mocha

Note that if you are intending to use Mocha with Test::Unit or MiniTest, you should only load Mocha after loading the relevant test library…

require "test/unit"
require "mocha"

If you're using Bundler, ensure the correct load order by not auto-requiring Mocha in the Gemfile and then later load it once you know the test library has been loaded…

# Gemfile
gem "mocha", :require => false

# Elsewhere after Bundler has loaded gems
require "test/unit"
require "mocha"

Note that versions 0.10.2, 0.10.3 & 0.11.0 included a bug. Please do not use these versions.

Or install the Rails plugin…

$ script/plugin install git://github.com/freerange/mocha.git

Note that versions 0.9.6 & 0.9.7 of the Rails plugin were broken. As of version 0.9.8, you need to explicitly load Mocha after the test framework e.g. by adding “require 'mocha'” at the bottom of test/test_helper.rb.


  • Quick Start - {file:misc.rb Usage Examples}

  • Traditional mocking - {file:mocha.rb Star Trek Example}

  • Setting expectations on real classes - {file:stubba.rb Order Example}

  • More examples on James Mead’s Blog

  • Mailing List Archives



Copyright Revieworld Ltd. 2006

You may use, copy and redistribute this library under the same terms as Ruby itself or under the {file:MIT-LICENSE.rdoc MIT license}.