2016-08-11 18 views
1

角度カスタムコンポーネント内のユーザー検索機能をテストしようとしています。私は、テキストを追加し、検索をトリガしようとしていますディレクティブテンプレートの入力(とのみ入力)は次のとおりです。カルマ/ジャスミンテストでEnterキーを押すと入力が発生する

<input type="text" ng-model="searchInput" class="form-control search"/> 

私は上記のものの入力に「ユーザー」のテキスト値を追加したいと思います。それがその値を持っていることを確認するためにテストし、エンターキーを押してから最初に一致するノードを選択してください。

  1. 入力要素
  2. は、入力値が押して中に必ず最初に一致したアイテムを作るための入力
  3. テキストで入力し
  4. 正しいことを確認するための入力
  5. テストにテキストを追加取得検索は

は試したことがあり正しいです:

it ("should search for the specified node", function() { 
       var value = "User is not registered" 

       var input = diagramDirective.find("input"); 

       $(input).val(value).trigger("input"); 
       scope.$apply(); 

       //why can't I trigger a click event here by doing something like 
       var e = jQuery.Event("keypress"); 
       e.keyCode = 13; 

       $(input).trigger(e); 


    } 

おかげ

+0

ユニットテストはコンポーネントのAPIをテストするためのものです。エンドツーエンドのテストでUIをテストする〜http://www.protractortest.org/#/ – Phil

+0

Philに感謝します。分度器は良いツールでもあります。なぜ私は上記のように何もできないのですが、私は不思議です。私は最近試したことに基づいていくつかのコードを追加しました。 – techer

答えて

2

JQuery.Eventをコントローラーの最終検索をトリガーするものに一致させる必要があるため、コントローラーがキー入力をリスンする場合は、jQuery.Eventが「keypress」イベントであることを確認する必要があります。コントローラーが "キーアップ"を聞いている場合は、jQueryイベントを "キーアップ"に設定する必要があります。また、実際のイベントのコールバックで一致するアイテムを探す必要があります

it("should search for the specified nodes", function() { 
      var value = "User is not registered"; 
      var e = jQuery.Event("keypress"); 
      e.keyCode = 13; 

      // find the input 
      var directiveElementInput = diagramDirective.find("input"); 

      // Set some text! 
      $(directiveElementInput).val(value).trigger("input"); 

      // make sure the input has the value 
      expect(directiveElementInput).toHaveValue(value); 

      // execute the event on the input and check for the selected item 
      $(directiveElementInput).keypress(function() { 
       // do your check here for the matching item here 
      }).trigger(e); 
     }); 
0

私は、入力ボックスは、必ずしも常に「入力」キーの押下によってトリガされていないため、入力ボックスにイベントリスナーでご覧になることをお勧めします。それが聞こえる可能性のある他のイベントは、「ぼかし」、「キーアップ」、「変更」です。イベントリスナーかon-whateverイベントかに応じて、それに応じてトリガーする必要があります。

申し訳ありませんが、これはあいまいですが、入力ボックスにアタッチされているイベントリスナーを知らなくても言い難いです。

これが役に立った!

関連する問題