Used to recursively dynamically generate an object where the properties are jest.fn()
functions.
Behind the scenes it uses a JavaScript Proxy to detect if a property on the created object is being
accessed or being invoked. If it's being invoked it generates a jest.fn()
and uses that, if it's
being accessed it creates a new mock proxy. This allows for mocks to be generated for objects
dynamically and deeply.