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
# 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
# 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