Using rspec-mocks on its own outside of RSpec (standalone mode)

require "rspec/mocks/standalone" to expose the API at the top level (e.g. main) outside the RSpec environment in a REPL like IRB or in a one-off script.

Allow a message outside RSpec

Given a file named “example.rb” with:

require "rspec/mocks/standalone"

greeter = double("greeter")
allow(greeter).to receive(:say_hi) { "Hello!" }
puts greeter.say_hi

When I run ruby example.rb

Then the output should contain “Hello!”.

Expect a message outside RSpec

Given a file named “example.rb” with:

require "rspec/mocks/standalone"

greeter = double("greeter")
expect(greeter).to receive(:say_hi)

RSpec::Mocks.verify

When I run ruby example.rb

Then it should fail with the following output:

(Double “greeter”).say_hi(*(any args))
RSpec::Mocks::MockExpectationError
expected: 1 time with any arguments
received: 0 times with any arguments