2017-01-16 28 views
1

要素のリストを取得しますが、一部は表示されません。表示されているものをクリックしてから、新しいクラスがある場合はchceckしたいと思います。promise内の関数it()が呼び出されません

var tabsExpandable = $$("my-nav-bar .my-nav-bar-column-item.expandable"); 

tabsExpandable.each(function (tab) { 
    tab.isDisplayed() 
     .then(function (isVisible) { 
      if (!isVisible) { 
       return "not visible"; 
      } 

      tab.click(); 

      it("should expand a visible tab", function() { 
       expect(tab.getAttribute("class")).toContain("expanded"); 
      }); 

     }); 
}); 

しかし、機能it("should expand...")が登録されていないため、ハンドラが呼び出されません。この問題を解決するには?

+0

を置く必要があり、あなたがテストしている仕事のあなたのユニットは何ですか? 'click'ハンドラが' '展開された' 'クラスを追加しているだけの場合は、反復なしでそれをテストする必要があります... –

+0

これはanglejsです。私はこの展開を扱うためのカスタムディレクティブを作った。 – Humberd

+0

私の主張は、あなたが単一のテストであまりにも多くのテストをしているようだ。フレームワークが何であるかは関係ありませんが、単体テストは単体/単体テストをテストする必要があります。あなたのコードはいくつかのことをテストしているようです(拡張可能なオプションはすべて動作します、 'isDisplayed'はタブが可視かどうかの約束を返します、' click'は ''展開された ''クラスをタブに追加します)。 –

答えて

3

あなたはit(...)最初

it("should expand a visible tab", function() { 
    var tabsExpandable = $$("my-nav-bar .my-nav-bar-column-item.expandable"); 

    tabsExpandable.each(function (tab) { 
     tab.isDisplayed() 
      .then(function (isVisible) { 
       if (!isVisible) { 
        return "not visible"; 
       } 

       tab.click(); 
       expect(tab.getAttribute("class")).toContain("expanded"); 


      }); 
    }); 
}); 
関連する問題