sinon-typed
Version:
Nicer stubbing in a TypeScript environment
24 lines (23 loc) • 857 B
TypeScript
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> = {
[ ]: 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;
}