Integrating with Minitest
To use rspec-mocks with minitest, simply require rspec/mocks/minitest_integration.
Use rspec-mocks with Minitest::Test
Given a file named “test/rspecmockstest.rb” with:
require 'minitest/autorun'
require 'rspec/mocks/minitest_integration'
class RSpecMocksTest < Minitest::Test
  def test_passing_positive_expectation
    dbl = double
    expect(dbl).to receive(:message)
    dbl.message
  end
  def test_failing_positive_expectation
    dbl = double
    expect(dbl).to receive(:message)
  end
  def test_passing_negative_expectation
    dbl = double
    expect(dbl).to_not receive(:message)
  end
  def test_failing_negative_expectation
    dbl = double
    expect(dbl).to_not receive(:message)
    dbl.message
  end
  def test_passing_positive_spy_expectation
    bond = spy
    bond.james
    expect(bond).to have_received(:james)
  end
  def test_failing_positive_spy_expectation
    bond = spy
    expect(bond).to have_received(:james)
  end
  def test_passing_negative_spy_expectation
    bond = spy
    expect(bond).not_to have_received(:james)
  end
  def test_failing_negative_spy_expectation
    bond = spy
    bond.james
    expect(bond).not_to have_received(:james)
  end
end
When I run ruby test/rspec_mocks_test.rb --seed 0
Then it should fail with the following output:
| 1) Failure: | 
| RSpecMocksTest#testfailingpositive_expectation | 
| (Double (anonymous)).message(*(any args)) | 
| expected: 1 time with any arguments | 
| received: 0 times with any arguments | 
| 2) Failure: | 
| RSpecMocksTest#testfailingnegative_expectation | 
| (Double (anonymous)).message(no args) | 
| expected: 0 times with any arguments | 
| received: 1 time | 
| 3) Failure: | 
| RSpecMocksTest#testfailingpositivespyexpectation | 
| (Double (anonymous)).james(*(any args)) | 
| expected: 1 time with any arguments | 
| received: 0 times with any arguments | 
| 4) Failure: | 
| RSpecMocksTest#testfailingnegativespyexpectation | 
| (Double (anonymous)).james(no args) | 
| expected: 0 times with any arguments | 
| received: 1 time | 
| 8 runs, 0 assertions, 4 failures, 0 errors, 0 skips | 
Use rspec-mocks with Minitest::Spec
Given a file named “spec/rspecmocksspec.rb” with:
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/mocks/minitest_integration'
describe "Minitest Spec integration" do
  it 'passes a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
    dbl.message
  end
  it 'fails a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
  end
  it 'passes a negative expectation (using to_not)' do
    dbl = double
    expect(dbl).to_not receive(:message)
  end
  it 'fails a negative expectation (using not_to)' do
    dbl = double
    expect(dbl).not_to receive(:message)
    dbl.message
  end
end
When I run ruby spec/rspec_mocks_spec.rb --seed 0
Then it should fail with the following output:
| 1) Failure: | 
| Minitest Spec integration#test0002fails a positive expectation | 
| (Double (anonymous)).message(*(any args)) | 
| expected: 1 time with any arguments | 
| received: 0 times with any arguments | 
| 2) Failure: | 
| Minitest Spec integration#test0004fails a negative expectation (using not_to) | 
| (Double (anonymous)).message(no args) | 
| expected: 0 times with any arguments | 
| received: 1 time | 
| 4 runs, 4 assertions, 2 failures, 0 errors, 0 skips | 
Load rspec-mocks before rspec-expectations, with Minitest::Spec
Given a file named “spec/rspecmocksspec.rb” with:
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/mocks/minitest_integration'
require 'rspec/expectations/minitest_integration'
describe "Minitest Spec integration" do
  it 'passes a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
    dbl.message
  end
  it 'fails a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
  end
  it 'passes a negative expectation (using to_not)' do
    dbl = double
    expect(dbl).to_not receive(:message)
  end
  it 'fails a negative expectation (using not_to)' do
    dbl = double
    expect(dbl).not_to receive(:message)
    dbl.message
  end
  it 'can use both minitest and rspec expectations' do
    expect(1 + 3).must_equal 4
    expect(1 + 3).to eq 4
  end
end
When I run ruby spec/rspec_mocks_spec.rb --seed 0
Then it should fail with the following output:
| 1) Failure: | 
| Minitest Spec integration#test0002fails a positive expectation | 
| (Double (anonymous)).message(*(any args)) | 
| expected: 1 time with any arguments | 
| received: 0 times with any arguments | 
| 2) Failure: | 
| Minitest Spec integration#test0004fails a negative expectation (using not_to) | 
| (Double (anonymous)).message(no args) | 
| expected: 0 times with any arguments | 
| received: 1 time | 
| 5 runs, 6 assertions, 2 failures, 0 errors, 0 skips | 
Load rspec-mocks after rspec-expectations, with Minitest::Spec
Given a file named “spec/rspecmocksspec.rb” with:
require 'minitest/autorun'
require 'minitest/spec'
require 'rspec/expectations/minitest_integration'
require 'rspec/mocks/minitest_integration'
describe "Minitest Spec integration" do
  it 'passes a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
    dbl.message
  end
  it 'fails a positive expectation' do
    dbl = double
    expect(dbl).to receive(:message)
  end
  it 'passes a negative expectation (using to_not)' do
    dbl = double
    expect(dbl).to_not receive(:message)
  end
  it 'fails a negative expectation (using not_to)' do
    dbl = double
    expect(dbl).not_to receive(:message)
    dbl.message
  end
  it 'can use both minitest and rspec expectations' do
    expect(1 + 3).must_equal 4
    expect(1 + 3).to eq 4
  end
end
When I run ruby spec/rspec_mocks_spec.rb --seed 0
Then it should fail with the following output:
| 1) Failure: | 
| Minitest Spec integration#test0002fails a positive expectation | 
| (Double (anonymous)).message(*(any args)) | 
| expected: 1 time with any arguments | 
| received: 0 times with any arguments | 
| 2) Failure: | 
| Minitest Spec integration#test0004fails a negative expectation (using not_to) | 
| (Double (anonymous)).message(no args) | 
| expected: 0 times with any arguments | 
| received: 1 time | 
| 5 runs, 6 assertions, 2 failures, 0 errors, 0 skips |