Class: MockApi::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/mock_api/rspec.rb,
lib/mock_api/runner.rb,
lib/mock_api/minitest.rb

Instance Method Summary collapse

Constructor Details

#initialize(url:, server:, store: nil) ⇒ Runner

Returns a new instance of Runner.



3
4
5
6
7
8
# File 'lib/mock_api/runner.rb', line 3

def initialize(url:, server:, store: nil)
  @url = Regexp.new(url)
  @server = server
  @store = store
  extend(store.mixin) unless store.nil?
end

Instance Method Details

#hooksObject



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/mock_api/rspec.rb', line 5

def hooks
  runner = self
  Module.new do
    define_singleton_method :included do |klass|
      klass.class_eval do
        before { runner.run }
        after { runner.reset }
      end
    end
  end
end

#resetObject



19
20
21
# File 'lib/mock_api/runner.rb', line 19

def reset
  @store&.reset
end

#run(url = @url) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/mock_api/runner.rb', line 10

def run(url = @url)
  if defined?(::WebMock)
    WebMock.stub_request(:any, url).to_rack(@server)
  else
    raise 'MockApi requires WebMock to be installed. ' \
      'Check out the setup guide at https://github.com/davidtkramer/mock_api#quick-start.'
  end
end