class RSpec::Contracts::MethodProxy
Public Class Methods
create(*args)
click to toggle source
# File lib/rspec/contracts/method_proxy.rb, line 8 def self.create(*args) new(*args) end
new(implementor, proxied_class, method_name)
click to toggle source
# File lib/rspec/contracts/method_proxy.rb, line 18 def initialize(implementor, proxied_class, method_name) @implementor = implementor @proxied_class = proxied_class @method_name = method_name install end
Public Instance Methods
add_message(arguments)
click to toggle source
# File lib/rspec/contracts/method_proxy.rb, line 12 def add_message(arguments) MessageGroup.new @implementor, @method_name, arguments end
Private Instance Methods
install()
click to toggle source
# File lib/rspec/contracts/method_proxy.rb, line 25 def install original_method = @proxied_class.instance_method @method_name method_proxy = self @proxied_class.send :define_method, @method_name do |*args| message_group = method_proxy.add_message args return_value = original_method.bind(self).call(*args) do |*values| message_group.add_response YieldedResponse.new(*values) end message_group.add_response ReturnedResponse.new(return_value) return_value end end