2016-07-19 16 views
1
$('.froala > div > div > div > p').each(function (index, element) { 
         if ($(element).text() !== '') { 
          wordCount += $(element).text().split(' ').length; 
         } 
        }); 

私はfroalaエディタですべての< p>タグを取得してカウントするこのコードを持っています。私はこれをカバーするためにジャスミン単位テストを書く必要があり、私はそれを行う手掛かりを持っていない。たぶん私は...JasmineユニットテストでJqueryセレクタをテストする

spyOn($('.froala > div > div > div > p'), 'each').and.returnValue([all, my, tags, here]); 

他のアイデアをspyOnを使用して<のp>タグの配列を返すことができますか?

+0

を持つジャスミンテストを書きます。 javasriptオブジェクトメソッドをテストする必要があります。それ以外の場合は、ジャスミンとPhantomJsとKarmaを一緒に使用して、スタブを使わずに実際のアプリケーションでテストを実行する必要があります。 –

答えて

0

あなたは実際にjQueryをテストするテストを書くべきではありません。ジャスミンはdomをテストするものではありません。独自のコード用のテストのみを記述し、決定的な入出力を持つ必要があります。

var myFunction = function(index, element) { 
           if ($(element).text() !== '') { 
            wordCount += $(element).text().split(' ').length; 
           } 
         } 
    var jquerySelector = ".froala > div > div > div > p"; 

    $(jquerySelector).each(myFunction }); 

次に、ファイルの上にインポートすると予想されるfroalaのHTMLジャスミンは全くテストの内側にあなたはjqueryのを使用してはならない理想の世界では

var wordCount = 0; 
var testhtml = '<div class="froala"><div><div><div><p>one</p><p>two</p></div></div></div></div>'; 

$(testhtml).find(jquerySelector).each(myFunction) 
expect(wordCount).toEqual(2) 
+0

おかげで、自分の虚偽のHTMLをスコープ関数に渡し、 –

+0

私はこれも、将来同様のことをしている人にとって非常に役に立つことがわかりました。https://testdrivenwebsites.com/2010/07/29/html-fixtures-in-jasmine-using-jasmine-jquery/ –

関連する問題