Sha256: cff066cc62a9553f9e92983a66549601521e1e0d351eb2a530226c6da2d90eae
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
require 'quarry/assert' module Quarry # Quarry's Mocking facility. # # obj = "hello" # # obj.mock.upcase == "HeLLo" # # obj.upcase #=> "HeLLo" # # obj.mockless! # # obj.upcase #=> "HELLO" # class Mock < Module attr :object def initialize(object) super() @object = object @table = {} object.extend(self) end def __table__ ; @table ; end def method_missing(meth, *args, &block) table = @table interface = [meth, args, block_given?] table[interface] = nil define_method(meth) do |*args| result = super result.assert == table[interface] return result end Setter.new(table, interface) end # class Setter def initialize(table, interface) @table = table @interface = interface end def ==(result) @table[@interface] = result end end end # class ::Object def mock @_mock ||= Mock.new(self) end def mockless! mock.__table__.each do |interface, result| meth = interface[0] mock.module_eval do remove_method(meth) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
quarry-0.4.0 | work/deprecated/mock/mock.0.rb |