2016-07-11 19 views
0

私は、Chromeでいくつかのテストを実行するために、QUnitとKarmaを組み合わせて使用​​しています。私は剣道UIのグリッドで特定のUI要素の機能をテストしたいと思います。しかし、その要素はリンクとカスタムスタイルで表現されます。プロダクションでは、このコードは正常に機能しますが、以下のようにclickイベントを実行するテストでは、ブラウザが別のページに移動します。おそらく、ページの各リンクとボタンのデフォルトを防ぐことができると思ったが、それは期待どおりに機能しなかった。誰か他のアイデアはありますか?ここに私のテストコードです:剣道グリッドがテストで失敗する

QUnit.test("Do the arrows do something once I click on them?", 
    function(assert) { 

    var done = assert.async(); 

    createShiftsGrid("#shifts-grid-test", "", "fooBaseURL", "subgridUrl/"); 
    gridHTML = $("#shifts-grid-test"); 

    $('a').click(function (e) { 
     e.preventDefault(); 
    }); 

    setTimeout(function(){ 
     var arrowIcons = $(gridHTML).find(".k-icon.k-plus"); 
     var oneIcon = $(arrowIcons[0]); 
     oneIcon.click(); 

     assert.expect(0); 

     done(); 

    }, 3000); 

    } 
); 

答えて

0

私はこの問題は、あなたの代わりにdispachEventのjQueryのクリック機能付きクリックイベントを開始していると思います。

はjQueryのでは、あなたが createEventdispachEvent機能を使用する必要があり、プレーンJavaScriptでは trigger function

$("#foo").on("click", function() { 
    alert($(this).text()); 
}); 
$("#foo").trigger("click"); 

を使用してイベントをトリガすることができます。 See this link。ここに私が以前使用したコードがあります。

//dispach a clicks clicks on events 
var evObj = document.createEvent('MouseEvents'); 
evObj.initEvent('click', true, false); 
$('#target1').each(function() { 
    this.dispatchEvent(evObj); 
}); 
+0

ありがとうございました。しかし、私はクリックイベントを誘発するために考えられるすべての方法を試しましたが、それらはすべて同じことを行い、/#にナビゲートしてテストランナーを破りました。私は奇妙なバグだと私はそれがなぜそれをやっているのか分かりません。 –

関連する問題