Sha256: d260df60e906de8c547ed99b5cf844a86a811928cab768c44ee790eaeb8fd84d
Contents?: true
Size: 1.05 KB
Versions: 32
Compression:
Stored size: 1.05 KB
Contents
module Flipper module Instrumenters # Instrumentor that is useful for tests as it stores each of the events that # are instrumented. class Memory Event = Struct.new(:name, :payload, :result) attr_reader :events def initialize @events = [] end def instrument(name, payload = {}) # Copy the payload to guard against later modifications to it, and to # ensure that all instrumentation code uses the payload passed to the # block rather than the one passed to #instrument. payload = payload.dup result = yield payload if block_given? rescue Exception => e payload[:exception] = [e.class.name, e.message] payload[:exception_object] = e raise e ensure @events << Event.new(name, payload, result) end def events_by_name(name) @events.select { |event| event.name == name } end def event_by_name(name) events_by_name(name).first end def reset @events = [] end end end end
Version data entries
32 entries across 32 versions & 1 rubygems