Stub constants for the duration of a block in MiniTest.
Similar to RSpec's stub_const.
Stub a constant for the duration of a block:
module Foo BAR = :original end Foo.stub_const(:BAR, :stubbed) do Foo::BAR end # => :stubbed Foo::BAR # => :original
This is especially useful when testing that the expected class methods
are being called on a
module SomeLib class Thing def self.add fail NotImplementedError end end end class ThingAdder def add_thing SomeLib::Thing.add end end describe ThingAdder do describe '#add_thing' do it 'should call Thing.add' do adder = ThingAdder.new mock = Minitest::Mock.new mock.expect(:add, nil) SomeLib.stub_const(:Thing, mock) do adder.add_thing end assert mock.verify end end end
gem install minitest-stub-const # duh
minitest-stub-const is free software, available under the MIT license.