带有按键的 Angular2 单元测试 Click()

Angular2 unit test Click() with keypress

我正在尝试测试 table 的排序功能。 table 启用对 primaray 和辅助值的排序。二级排序值是按住shift键设置的

排序顺序设置代码:

private sortClick(event: any, column: DataGridColumn): void {
    if (!column.sortable) {
        return;
    }

    if (event.shiftKey) { // When the shift key is pressed, secondary sorting is being set.
        if (column.headerText === this.primarySorting.headerText) {
            return;
        }
        this.secondarySortingColumn.setSortingProperty(column.headerText, column.name);
    } else {
        this.primarySorting.setSortingProperty(column.headerText, column.name);
        this.secondarySortingColumn.clear();
    }

    this.sortData(this);
}

现在我正在为函数编写单元测试。 使用以下方法完成主要排序:

    let firstColumn: NodeListOf<HTMLElement> = <NodeListOf<HTMLElement>>compiled.querySelectorAll("#header0");
    firstColumn.item(0).click();

如何在 unit test

中使用 shift key pressed 调用 .click() 函数

您可以使用dispaatchEvent方法调用点击事件并提供其他事件信息如下:

var event = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'shiftKey': true
});

let firstColumn: NodeListOf<HTMLElement> = <NodeListOf<HTMLElement>>compiled.querySelectorAll("#header0");
firstColumn.item(0).dispatchEvent(event);

请注意 shiftKey 成员在 mouseEventInit 字典参数中设置为 true MouseEvent 构造函数,这允许我们指定按下 shiftKey。