class HerdstServicecall::Mocker

Public Class Methods

mock_call(event, body, code = 200) { || ... } click to toggle source
# File lib/herdst_servicecall/mocker.rb, line 8
def self.mock_call(event, body, code = 200, &block)
    stub_call(:call, event, body, code) do
        yield if block_given?
    end
end

Private Class Methods

stub_call(method, event, body, code = 200) { || ... } click to toggle source
# File lib/herdst_servicecall/mocker.rb, line 16
def self.stub_call(method, event, body, code = 200)
    calls = []
    
    Caller.class_eval do
        alias_method :"new_#{method}", method
        
        define_method(method) do |*args|
            calls << args
            
            Response.new(event, code, body)
        end
    end
    
    begin
        yield if block_given?
    ensure
        Caller.class_eval do
            undef_method method
            alias_method method, :"new_#{method}"
            undef_method :"new_#{method}"
        end
    end
    
    calls
end