class Shoegaze::Scenario::Mock

Public Class Methods

mock(_nothing = nil) click to toggle source

This is a mocking interface for all mocking contexts except for the top-level mocking context. in other words, when you're chaining implementation calls, this interface will be used beyond the top-level context. It behaves almost exactly like Shoegaze::Mock.

example:

class Fake < Shoegaze::Mock
  mock "Real"

  implement :accounts do # top-level Shoegaze::Mock interface
    scenario :success do
      datasource do
        implement :create do # Shoegaze::ScenarioMock interface from now on
          default do
            datasource do
              implement :even_more_things # yup, still Shoegaze::ScenarioMock...
                default do
                  datasource do |params|
                    OkayFinally.new(params)
                  end
                end
              end
            end
          end
        end
      end
    end
  end
end
# File lib/shoegaze/scenario/mock.rb, line 37
def mock(_nothing = nil)
  @_mock_class = double
  @mock_class_double = double
  @mock_instance_double = double

  extend_double_with_extra_methods(@mock_instance_double)
  extend_double_with_extra_methods(@mock_class_double)

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

  proxy
end