UNPKG

sinon-typed

Version:

Nicer stubbing in a TypeScript environment

24 lines (23 loc) 857 B
import * as sinon from 'sinon'; export interface Mock<T> { readonly control: sinon.SinonMock; readonly object: T; } export interface SinonPropertyStub<U> { returns(value: U): void; } export interface Stub<T> { readonly object: T; readonly stub: StubT<T>; stubMethod(method: keyof T): sinon.SinonStub; stubProperty<K extends keyof T>(property: K): SinonPropertyStub<T[K]>; } export declare type StubT<T> = { [P in keyof T]: sinon.SinonStub; }; export declare class SinonTyped { static mock<T extends object>(sandbox?: sinon.SinonSandbox): Mock<T>; static stub<T extends object>(sandbox?: sinon.SinonSandbox): Stub<T>; static partiallyStub<T extends object>(partial: Partial<T>, sandbox?: sinon.SinonSandbox): Stub<T>; static partially<T extends object>(partial: Partial<T>, sandbox?: sinon.SinonSandbox): T; }