Class RR::DoubleDefinitions::Strategies::DoubleInjection::NewInstanceOf
In: lib/rr/double_definitions/strategies/double_injection/new_instance_of.rb
Parent: DoubleInjectionStrategy

This class is Deprecated. Calling instance_of will cause all instances of the passed in Class to have the Double defined.

The following example mocks all User‘s valid? method and return false.

  mock.instance_of(User).valid? {false}

The following example mocks and proxies User#projects and returns the first 3 projects.

  mock.instance_of(User).projects do |projects|
    projects[0..2]
  end

Methods

Protected Instance methods

[Source]

    # File lib/rr/double_definitions/strategies/double_injection/new_instance_of.rb, line 28
28:           def add_double_to_instance(instance)
29:             double_injection = Injections::DoubleInjection.find_or_create((class << instance; self; end), method_name)
30:             Double.new(double_injection, definition)
31:             instance
32:           end

[Source]

    # File lib/rr/double_definitions/strategies/double_injection/new_instance_of.rb, line 19
19:           def do_call
20:             if !double_definition_create.no_subject? && !double_definition_create.subject.is_a?(Class)
21:               raise ArgumentError, "instance_of only accepts class objects"
22:             end
23:             DoubleDefinitions::DoubleInjections::NewInstanceOf.call(subject) do |subject|
24:               add_double_to_instance(subject)
25:             end
26:           end

[Validate]