File: stub_strategy.rb

package info (click to toggle)
ruby-naught 2.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 180 kB
  • sloc: ruby: 658; makefile: 6
file content (30 lines) | stat: -rw-r--r-- 863 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module Naught
  # Strategies for stubbing methods on null objects
  #
  # @api private
  module StubStrategy
    # Stub that returns nil from any method
    module ReturnNil
      # Define a method that returns nil
      #
      # @param subject [Module, Class] target to define method on
      # @param name [Symbol] method name to define
      # @return [void]
      def self.apply(subject, name)
        subject.define_method(name) { |*, **, &| nil }
      end
    end

    # Stub that returns self from any method (black hole)
    module ReturnSelf
      # Define a method that returns self
      #
      # @param subject [Module, Class] target to define method on
      # @param name [Symbol] method name to define
      # @return [void]
      def self.apply(subject, name)
        subject.define_method(name) { |*, **, &| self }
      end
    end
  end
end