我發現測試JQuery動畫的問題。問題是,在jasmine.Clock.useMock()
模式下,JQuery在執行效果後不會調用complete
函數。茉莉花時鐘嘲諷和JQuery效果'完成'功能並不順利
邏輯:
$('#mydiv').fadeOut('normal', function() {
// this is called AFTER the test ends
// but should be called after jasmine.Clock.tick(1000);
$(this).remove();
})
規格:
it('should pass', function() {
jasmine.Clock.useMock();
// call logic
jasmine.Clock.tick(1000);
// using jasmine-jquery matcher
expect($('#mydiv')).not.toExist();
})
測試失敗,與消息:
Expected '<div id="mydiv" style="opacity: 0; "></div>' not to exist.
這意味着,影響正常結束,但不叫complete
功能。它在測試運行器完成執行後實際上被調用。
我不確定是否向JQuery或Jasmine開發人員報告錯誤。也許有人會建議解決方法。
我的目標是測試該元素在邏輯執行後被移除,所以我需要not.toExist()
匹配器。
感謝您的建議,但是執行'$ .fx.off = true'也不會產生調用'完成'功能。儘管在其他情況下它確實是有用的模式。 – vkovalskiy 2012-02-12 13:51:42
提到的GitHub問題的鏈接將有所幫助。 https://github.com/pivotal/jasmine/issues/184 – 2012-11-27 14:43:33