def implements interfaces
      file_path = caller.first.match(/(?:^|#{Dir.pwd}\/)([^\/].*):\d+:in .+/)[1]
      interfaces.each do |method_name, required_params|
        λ = Spectro::Database.fetch(file_path, method_name, *required_params) || Spectro::Mock.create(file_path, method_name)

        raise Spectro::Exception::UndefinedMethodDefinition.new(file_path, method_name) if λ.nil?

        self.send(:define_method, method_name, &λ)
      end
    end
def implements interfaces
      file_path = caller.first.match(/(?:^|
      interfaces.each do |method_name, required_params|
        λ = Spectro::Database.fetch(file_path, method_name, *required_params) || Spectro::Mock.create(file_path, method_name)

        raise Spectro::Exception::UndefinedMethodDefinition.new(file_path, method_name) if λ.nil?

        self.send(:define_method, method_name, &λ)
      end
    end
def implements interfaces file_path = caller . first . match ( / #{ Dir . pwd } \/ \/ \d / ) [ 1 ] interfaces . each do | method_name , required_params | λ  pectro: :D atabase. f etch( f ile_path, ethod_name, equired_params) |  pectro: :M ock. c reate( f ile_path, ethod_name) raise Spectro :: Exception :: UndefinedMethodDefinition . new ( file_path , method_name ) if λ. n il? self . send ( :define_method , method_name , λ) end end
Register the given method name supporting the given parameters.

 Whenever Spectro::Config.mocks_enabled? is true it will try to cover unfulfilled
 specs using the known rules as mocks.

 @param [{String, Symbol=><String, Symbol>}] interfaces hash of method names and required param names supported by the method
Register the given method name supporting the given parameters .