Skip to content

Commit

Permalink
chore(spy): corrected the types
Browse files Browse the repository at this point in the history
  • Loading branch information
Sayan751 committed Nov 12, 2020
1 parent fff45f7 commit 3115009
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/Spy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@ const identity: ArgumentTransformer = (_) => _;

const noop: () => void = () => { /* noop */ };

export class Spy<T extends Record<string, unknown>> {
export class Spy<T extends object> {
public callRecords = new Map<string, unknown[][]>();

public getMock(objectToMock: T, callThrough: boolean = true, mocks: Partial<T> = {}): T {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const spy = this;
return new Proxy<T>(objectToMock, {
get(target: T, propertyKey: string, _receiver: unknown): unknown {
const original = target[propertyKey];
const mock = mocks[propertyKey];
const original = (target as Record<string, unknown>)[propertyKey];
const mock = (mocks as Record<string, unknown>)[propertyKey];
if (spy.isFunction(original)) {
if (spy.isFunction(mock)) {
return spy.createCallRecorder(propertyKey, mock);
Expand Down Expand Up @@ -90,15 +90,15 @@ export class Spy<T extends Record<string, unknown>> {
}
}

export class SpiedProxy<T extends Record<string, unknown>> {
export class SpiedProxy<T extends object> {
public constructor(
public spy: Spy<T>,
public mockedObject: T
) { }
}
export function createSpy<T extends Record<string, unknown>, K extends keyof T>(objectToMock: T, methodName: K, callThrough: boolean, mockImplementation?: T[K]): SpiedProxy<T>;
export function createSpy<T extends Record<string, unknown>>(objectToMock: T, callThrough: boolean, mockImplementation?: Partial<T>): SpiedProxy<T>;
export function createSpy<T extends Record<string, unknown>, K extends keyof T>(objectToMock: T, ...args: unknown[]): SpiedProxy<T> {
export function createSpy<T extends object, K extends keyof T>(objectToMock: T, methodName: K, callThrough: boolean, mockImplementation?: T[K]): SpiedProxy<T>;
export function createSpy<T extends object>(objectToMock: T, callThrough: boolean, mockImplementation?: Partial<T>): SpiedProxy<T>;
export function createSpy<T extends object, K extends keyof T>(objectToMock: T, ...args: unknown[]): SpiedProxy<T> {
let methodName: K;
let callThrough: boolean;
let mockImplementation: Partial<T> = {};
Expand Down

0 comments on commit 3115009

Please sign in to comment.