2017-12-08 1 views
1

私のng4アプリケーションでは、ウィンドウのフォーカスイベントでObservableを公開するサービスがあります。これをテストするにはどうしたらいいですか(私はジャスミンを使用していますが、これはあまり重要ではありません)。どのようにDOMウィンドウイベントをモックできますか?

constructor(@Inject('Window') private window: Window) { 

    this.window.onfocus =() => { 
     this.onFocusSubject.next(); 
    }; 
} 

// how can I test that the onFocus Observable is triggered 
// when window.onfocus is fired? 
public onFocus(): Observable<any> { 
    return this.onFocusSubject.asObservable(); 
} 

私のアプローチはちょうどBehaviorSubjectを使用してサービスをあざけりとnextをトリガーするウィンドウオブジェクトを模擬するために、火災にONFOCUSイベントをトリガしますが、イベントをトリガーする方法がわからないよ...

答えて

1

ですリスナーが呼び出されるようにします。このよう

const serviceStub = { 
 
    windowEvent: new BehaviorSubject(null); 
 
} 
 

 
// in your test: 
 

 
it('should trigger an event listener: ',() => { 
 
    const service = componentInstance.injector.get(Service); 
 
    service.windowEvent.next(new FocusEvent('focus')); 
 
    // write your test logic here 
 
})

関連する問題