2012-12-04 81 views
31

完成之前是如何写的人,涉及触发UI事件序列角度端到端测试?情景的异步性似乎使其变得困难。角场景E2E测试 - 等待关键事件继续

细节: 我写的,有很多的按键处理,以帮助特殊格式的速度编辑应用程序测试。我拉到一起键盘延长到方案DSL(见下文),但只是一个测试的第一个关键事件有任何影响。即

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没有做任何事情,因为它没有找到一个*:重点路线的关键是(虽然有一个在屏幕上)。混乱。

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; 
    }; 
}); 
+0

因此,问题可能是你的代码,而不是你的测试。您能否在您的应用上发布您的'keydown'活动正在做什么?我复制你的方案测试,并增加了一个'browser.navigateTo',在我的HTML('的tabindex =“0”')添加了一个'div',并补充说,切换之间的'和'00内容一个简单的事件: 40'在keydown。一切正常。 –

回答

1

用户似乎已经放弃了这个问题,但正如我所说,这可能是一个问题与他​​事件处理

做了一个Plnker这里具有完全相同的代码,一切都按预期方式工作。