0

这是一个非常小而简单的问题。在网上看,我找不到任何东西,但我希望能够对我们的剑道图表进行单元测试,特别是 seriesClick 事件按预期工作。问题是我似乎找不到触发事件的方法。我正在尝试通过 jQuery 定位图表系列并调用 .click()。尝试这种方法没有给我任何东西,所以在绝望的时刻,我尝试点击所有内容

$('*').each(function(){
    $(this).click();
});

没有这样的运气。这是 chartOptions 片段

$scope.chartOptions = {
                //...
                // On Click add the criteria to the serach bar.
                seriesClick: function (series) {
                        console.log("seriesClick");
                        //Do stuff here                            
                        $scope.$apply();
                    }
                }
            };

当我尝试在单元测试中运行上述 jQuery 代码时,我没有得到控制台输出。这里是。

xit('should update the searchbar when a series item has been clicked', inject(function ($compile, $rootScope, $timeout) {
        var scope = $rootScope.$new();
        //Write out the directive
        //We have a directive that will replace this tag with the kendo-chart directive
        var ele = $compile('<chart></chart>')(scope); 
        angular.element(document.body).append(ele);
        scope.$digest();
        $timeout.flush(0);
        scope = ele.isolateScope();

        console.log('clicking everything');
        $('*').each(function () {
            $(this).click();
        });

我已经向 Telerik 论坛提交了同样的问题,希望从“专家”那里得到一些建议,但我得到的回复几乎没有 SO。

编辑 我确实在 Telerik 论坛上遇到过这篇文章,并希望我需要做的不是“目前不支持开箱即用”。

4

1 回答 1

1

telerik论坛上询问后,我终于得出了这个答案

 element.mousedown().mouseup()    //Trigger events for Chrome, Firefox and IE9
            .trigger(jQuery.Event("MSPointerDown", { originalEvent: {} })).trigger(jQuery.Event("MSPointerUp", { originalEvent: {} }))  //Trigger event for IE10
            .trigger(jQuery.Event("pointerdown", { originalEvent: {} })).trigger(jQuery.Event("pointerup", { originalEvent: {} })); //Trigger event for IE11

显然它监听 mousedown() mouseup() 事件。然后在看到它不适用于 IE10 和 11 之后,我需要使用另一种触发 mousedown()/mouseup() 的方式

于 2014-05-09T13:30:49.003 回答