@mcm4iob/testing
Version:
Shared utilities for adapter and module testing in ioBroker
14 lines (13 loc) • 951 B
TypeScript
/// <reference types="sinon" />
import type { Equals, Overwrite } from "alcalzone-shared/types";
export type IsAny<T> = Equals<T extends never ? false : true, boolean>;
export type MockableMethods<T, All = Required<T>, NoAny = {
[K in keyof All]: IsAny<All[K]> extends true ? never : All[K] extends (...args: any[]) => void ? K : never;
}> = NoAny[keyof NoAny];
export type Mock<T extends {}> = Overwrite<T, {
[K in MockableMethods<T>]: sinon.SinonStub;
}>;
export declare function doResetHistory(parent: Record<string, any>): void;
export declare function doResetBehavior(parent: Record<string, any>, implementedMethods: Record<string, any>): void;
export declare function stubAndPromisifyImplementedMethods<T extends string>(parent: Record<T, any>, implementedMethods: Partial<Record<T, any>>, allowUserOverrides?: T[]): void;
export type ImplementedMethodDictionary<T> = Partial<Record<MockableMethods<T>, "none" | "normal" | "no error">>;