角度検査のドキュメントによれば、テストからイベントをトリガするために、デバッグ要素でtriggerEventHandler()
メソッドを使用します。このメソッドにはevent name
とobject
が使用されます。これは、HostListener
を使用してイベントを追加する場合に機能します。例:@HostListener('mousemove', ['$event'])
またはdocument
レベルイベントを追加する場合は、@HostListener('document:mousemove', ['$event'])
のようにします。ジャスミンテストからドキュメントレベルのイベントをトリガする方法角度2/4
私の現在のディレクティブの実装では、HostListenersをネストできないため、レベルのイベントをdocument.addEventListener
のHostListener
を使って追加します。
@HostListener('mousedown', ['$event'])
callMouseDown(event){
if (something) {
document.addEventListener('mousemove', this.callMouseMove.bind(this));
}
}
callMouseMove(event){
// do some computations.
}
は今、私は私のテストからdocument
レベルで追加されたmousemove
イベントをトリガします:次のように
コードです。 triggerEventHandler()
の現在の実装は機能しません。つまり、リスナーはテストで起動されません。
これを動作させるにはどうすればよいですか?誰も助けを借りて助けてくれますか?
編集:追加のテスト:
it('test spec', inject([MyService], (service: MyService) =>{
x = [];
//service calls the method
service.evtEmit.subscribe(e => {
x.push(e);
});
triggerEventHandler("mousedown", {pageX: 200, pageY: 300});
triggerEventHandler("document:mousemove", {pageX: 250, pageY: 320});
// the above statement won't work.
expect(arr).toEqual({x:50, y: 20});
}));
この 'this.callMouseMove()'は正しい構文ですか? – yurzui
テストを追加することはできますか? – yurzui
@yurzuiこんにちは、私はテストを更新しました。私はそれを今修正した関数を呼び出す構文で間違いを犯しました。 –