class Impersonator::RecordMode
The state of a {Recording recording} in record mode
Attributes
recording_path[R]
recording file path
Public Class Methods
new(recording_path)
click to toggle source
@param [String] recording_path
the file path to the recording file
# File lib/impersonator/record_mode.rb, line 10 def initialize(recording_path) @recording_path = recording_path end
Public Instance Methods
finish()
click to toggle source
Finishes the record session
# File lib/impersonator/record_mode.rb, line 34 def finish File.open(recording_path, 'w') do |file| YAML.dump(@method_invocations, file) end end
invoke(impersonated_object, method, args)
click to toggle source
Records the method invocation
@param [Object, Double] impersonated_object @param [MethodInvocation] method @param [Array<Object>] args
# File lib/impersonator/record_mode.rb, line 26 def invoke(impersonated_object, method, args) spiable_block = method&.block_spy&.block impersonated_object.send(method.name, *args, &spiable_block).tap do |return_value| record(method, return_value) end end
start()
click to toggle source
Start a recording session
# File lib/impersonator/record_mode.rb, line 15 def start logger.debug 'Recording mode' make_sure_recordings_dir_exists @method_invocations = [] end
Private Instance Methods
make_sure_recordings_dir_exists()
click to toggle source
# File lib/impersonator/record_mode.rb, line 51 def make_sure_recordings_dir_exists dirname = File.dirname(recording_path) FileUtils.mkdir_p(dirname) unless File.directory?(dirname) end
record(method, return_value)
click to toggle source
Record a {MethodInvocation method invocation} with a given return value @param [Method] method @param [Object] return_value
# File lib/impersonator/record_mode.rb, line 45 def record(method, return_value) method_invocation = MethodInvocation.new(method_instance: method, return_value: return_value) @method_invocations << method_invocation end