Module: Selenium::More::Hooks::ClassMethods

Defined in:
lib/selenium/more/hooks.rb

Instance Method Summary collapse

Instance Method Details

#hook(method, opts) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/selenium/more/hooks.rb', line 10

def hook(method, opts)
  if instance_methods.include?(method.to_sym)
    mod = Module.new do
      define_method method do |*args|
        opts[:before].call(self)     if opts[:before]
        ret = super(*args)
        opts[:after].call(self, ret) if opts[:after]

        ret
      end
    end

    prepend(mod)
  else
    raise NoMethodError, "no #{method} to hook"
  end
end