Angular2单元测试使用按键单击()

时间:2017-03-01 13:49:42

标签: unit-testing sorting angular click keyboard-events

我正在尝试测试表的排序功能。该表可以对primaray和secondary值进行排序。通过按住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);
}

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

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

如何使用.click()

中的shift key pressed来调用unit test功能

1 个答案:

答案 0 :(得分:1)

您可以使用dispaatchEvent方法调用click事件并提供其他事件信息,如下所示:

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成员在MouseEvent构造函数的mouseEventInit字典参数中设置为true,这允许我们指定按下shiftKey。