31

人们如何编写涉及触发一系列 UI 事件的角度 e2e 测试?场景的异步性质似乎使它变得困难。

详细信息:我正在为一个应用程序编写测试,该应用程序具有很多键处理以帮助加快编辑专用表单的速度。我已经为场景 dsl 提供了一个键盘扩展(见下文),但只有测试的第一个键事件有任何影响。IE

keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('00:04');
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('');  // but equals 00:04

第二个 keydown 没有做任何事情,因为它没有找到 *:focus 将键路由到(尽管屏幕上有一个)。令人困惑。

angular.scenario.dsl('keyboard', function() { 
    var chain  = {}; 
    chain.keydown = function(selector, keyEvent, keyCode, shift, ctrl) { 
        return this.addFutureAction("keyEvent", function($window, $document, done) { 
            var jQuery = $window.$; 
            var e = jQuery.Event(keyEvent);
            e.keyCode = keyCode; // # Some key code value
            e.altKey = false;
            e.ctrlKey = ctrl;
            e.shiftKey = shift;
            if (selector == null) selector = '*:focus';
            var j = jQuery(selector);
            if (j == null) j = jQuery('body');
            j.trigger(e);
            done(); 
        }); 
    }; 
    return function() { 
        return chain; 
    }; 
}); 
4

1 回答 1

1

用户似乎已经放弃了这个问题,但正如我所说,这可能是他的keydown事件处理程序的问题。

在这里用完全相同的代码制作了一个Plnker ,一切都按预期工作。

于 2013-04-16T12:20:20.187 回答