2012-12-04 80 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這裏具有完全相同的代碼,一切都按預期方式工作。