class Shoegaze::Mock

Provides the top-level mocking interface from which our mocks will inherit.

Public Class Methods

mock(class_name) click to toggle source

Creates a Shoegaze mock proxy for the provided class name

@param class_name [String] String name of the constant to mock @return [Class.new(Shoegaze::Proxy)] The created Shoegaze proxy. Use this as the replacement for your real implementation.

example:

class RealClass
end

class FakeClass < Shoegaze::Mock
  mock "RealClass"
end
# File lib/shoegaze/mock.rb, line 21
def mock(class_name)
  @mock_class_double = class_double(class_name)
  @mock_instance_double = instance_double(class_name)

  extend_double_with_extra_methods(@mock_instance_double)
  extend_double_with_extra_methods(@mock_class_double)

  @implementations = {class: {}, instance: {}}

  proxy
end