class ScopeWithEvents { listeners = {}; constructor() { } public $on(eventName: string, func: Function) { console.log(this.listeners); if ((this.listeners)[eventName]) { (this.listeners)[eventName].push(func); } else { (this.listeners)[eventName] = [func]; } console.log(this.listeners); } public $emit(message: string, arg?: any) { console.log("Emitted " + message); if ( (this.listeners)[message]) { console.log("LISTENERS:", (this.listeners)[message]); (this.listeners)[message].forEach((f: Function) => { f(arg); }); } } } export var mocks = { scopeWithEvents: new ScopeWithEvents(), modalInstance: { close: () => { } }, $modal: { open: (args: {}) => { return this.modalInstance; } }, authService: { logout: () => { } }, sessionWithCurrentUser: (user: any) => { return { currentUser: () => { return user; } }; } };