2013-10-11 37 views
1

我搜索了文檔和谷歌,我正在努力尋找堅實的參考,以便如何爲ngMouseenter事件編寫E2E測試。 Angular的E2E測試工具有element(<selector>).click(),但沒有其他事件類型可以看到。沒有辦法測試ngMouseenter嗎?

在我的情況下,mouseenter(和mouseleave)會觸發我想繼續測試的行爲,我想其他人也有類似的用例。有沒有辦法做到這一點?

[編輯]

,我發現這裏的角度的情況下亞軍的延伸上SO:AngularJS: how to invoke event handlers and detect bindings in tests

這讓我做的事情:

jqFunction(<selector>, "mouseenter")

偉大工程。

回答

1

在角度github上看,pull requestmouseover,它合併在v1.1.2 here中。也許這會有幫助?

否則,只要您可以使用jQuery觸發事件,你應該能夠做到像

element(<selector>).query(function(selected, done) { 
    selected.trigger('mouseenter'); 
    done(); 
}); 

任何自定義事件。說到這一點,我曾嘗試過一次猛擊,似乎無法觸發mouseenter,無論是否涉及角度。

+0

這個解決方案似乎不幸的是沒有工作,雖然我不能精確知道爲什麼。然而,我在這裏發現了一個有用的擴展,它允許我做我正在尋找的東西:http://stackoverflow.com/questions/17575768/angularjs-how-to-invoke-event-handlers-and-detect -bindings-in-tests/17807007#17807007 – cmw

+0

不錯的地方。看到這一點,我想我明白爲什麼我的工作不正常,而其他人則如此。 在我的'query'裏面,'selected'是來自場景運行器內部的jQuery lib(我的情況是1.8.2)中的一個jq對象。當我觸發一個事件時,它會爲該jQuery實例運行附加在緩存中的處理程序。 該鏈接顯示瞭如何從實際應用中獲取jQuery實例(從而將測試綁定到應用多一點),並允許您像從自己的應用中完成一樣觸發。 我仍然有點困惑,爲什麼'click'會工作,但'mouseenter'不會。 – Andyrooger

1

ng-mouseenter指令建立在內部的mouseover事件上。要觸發它,只需調用

yourElement.trigger('mouseover'); 

參見this question

相關問題