2012-12-04 2 views
31

一連のUIイベントをトリガする角度e2eテストを作成する人々はどのようにしていますか?シナリオの非同期性が難しいようです。角度シナリオ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に' div'を1つ追加しました( 'tabindex =" 0 "')、 ''と'00の間で内容を切り替えるシンプルなイベントを追加しました: keydownの40 '。すべてうまくいった。 –

答えて

1

ユーザーがこの質問を放棄しているように見えるが、、私が言ったように、これはおそらく、彼の​​イベントハンドラの問題です。

Plnkerは全く同じコードで作成されており、すべて正常に動作します。

関連する問題