typemoq
Version:
A simple mocking library for TypeScript
51 lines (40 loc) • 1.62 kB
text/typescript
import * as all from "./_all";
import { MockBase } from "./MockBase";
import { MockBehavior } from "./_all";
import { InterceptorExecute } from "./InterceptorExecute";
import { MethodCall } from "./MethodCall";
import { MethodCallReturn } from "./MethodCallReturn";
export class DynamicMock<T> extends MockBase<T> {
private constructor(
target: T,
name: string,
canOverrideTarget: boolean,
behavior: all.MockBehavior) {
super(target, canOverrideTarget, behavior);
if (name)
this._name = name;
this._interceptor = new InterceptorExecute(this);
this._proxy = all.ProxyFactory.createProxyES6<T>(target, this._interceptor);
}
static ofType<U>(name: string, behavior: all.MockBehavior, shouldOverrideTarget: boolean): all.IMock<U> {
const mock: DynamicMock<U> = new DynamicMock<U>(<any>(() => { }), name, shouldOverrideTarget, behavior);
return mock;
}
// setup
setup<TResult>(expression: all.IFunc2<T, TResult>): MethodCallReturn<T, TResult> {
const call = MethodCallReturn.ofDynamicMock(this, expression);
this._interceptor.addExpectedCall(call);
return call;
}
// verify
verify<TResult>(expression: all.IFunc2<T, TResult>, times: all.Times): void {
const call = MethodCall.ofDynamicMock(this, expression);
this._interceptor.addExpectedCall(call);
try {
this._interceptor.verifyCallCount(call, times);
}
catch (e) {
throw e;
}
}
}