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 extends MockBase { 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(target, this._interceptor); } static ofType(name: string, behavior: all.MockBehavior, shouldOverrideTarget: boolean): all.IMock { const mock: DynamicMock = new DynamicMock((() => { }), name, shouldOverrideTarget, behavior); return mock; } // setup setup(expression: all.IFunc2): MethodCallReturn { const call = MethodCallReturn.ofDynamicMock(this, expression); this._interceptor.addExpectedCall(call); return call; } // verify verify(expression: all.IFunc2, times: all.Times): void { const call = MethodCall.ofDynamicMock(this, expression); this._interceptor.addExpectedCall(call); try { this._interceptor.verifyCallCount(call, times); } catch (e) { throw e; } } }