import { Spy } from './jest-auto-spies.types'; import { createFunctionSpy } from './create-function-spy'; import { OnlyMethodKeysOf, ClassSpyConfiguration, createAutoSpyFromClass, ClassType, } from '@hirez_io/auto-spies-core'; export { ClassSpyConfiguration } from '@hirez_io/auto-spies-core'; export function createSpyFromClass( ObjectClass: ClassType, methodsToSpyOnOrConfig?: OnlyMethodKeysOf[] | ClassSpyConfiguration ): Spy { const autoSpy = createAutoSpyFromClass( ObjectClass, createFunctionSpy, accessorSpyFactory, methodsToSpyOnOrConfig ); return autoSpy as Spy; } function accessorSpyFactory( autoSpy: any, accessorName: string, accessorType: 'getter' | 'setter' ): jest.SpyInstance { if (accessorType === 'setter') { return jest.spyOn(autoSpy, accessorName, 'set'); } return jest.spyOn(autoSpy, accessorName, 'get'); }