簡體   English   中英

將模擬DOM事件傳遞給Angular中的組件方法以進行單元測試

[英]Passing a mock DOM event to component method in Angular for unit testing

我試圖在我的一個組件中測試一個方法如下:

toggle(event: Event): void {
    event.stopPropagation();
    this.isCollapsed = !this.isCollapsed;
}

我找不到將事件對象傳遞給單元測試用例中的方法的方法,例如:

test('it should call stop propagation when toggled', () => {
    testHostComponent.toggleLineBreakDown(mockEventGoesHere, 0);
});

您可以測試是否已通過Jasmine Spy調用preventDefault。

在使用SpyOn方法之前,您必須創建要監聽的事件。 (在以下示例中,它是'click'事件)。 創建事件和間諜后,您將需要將事件分派給元素。

舉個例子:

const event = new MouseEvent('click'); 
spyOn(event, 'preventDefault');

element.dispatchEvent(event);
expect(event.preventDefault).toHaveBeenCalled();

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM