2014-01-31 58 views
0

我有一個角度的應用程序需要一點jQuery的複雜的用戶界面拖放操作。爲此,我使用jQuery ui draggables。Angularjs + Jquery Draggables測試問題與Karma和茉莉花

他們工作正常,但我不知道如何將業力/茉莉花單元測試應用到控制器了。

所有我的其他控制器都沒有問題的測試,但現在有jQuery的這個特定的控制器是給我的問題。

我收到這個因緣錯誤:

INFO [karma]: Karma v0.10.9 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket c8iF8rN90zbXSoEYRJzC 
PhantomJS 1.9.7 (Mac OS X) ERROR 
ReferenceError: Can't find variable: $ 

我聽說這是更好地jQuery的位移動指令。在這種情況下你能指導我嗎?

我在我的控制器內部以這種方式創建選項卡。目前用戶界面運行良好,但正如我所說,這是不可測試的。

$scope.addSortables = function(){ 
    //ordering locations 
    $(".dummy-widget .days-container .locations").sortable({ 
     "stop" : function (ui, event){ 

      refreshLocations(ui, event); 

      PreviewManager.enableTabs(); 
     } 
    }); 
} 

非常感謝

回答

3

角用途jqLite,而不是jQuery的,但它會很樂意使用jQuery提供您負荷角度之前,你加載它。一旦你這樣做,你將不需要依靠全球$,angular.element將成爲你的jQuery handle

所以,你記得在你的Karma配置中加載jQuery嗎?它應該看起來像下面這樣:

// in karma config 
    files: [ 
     'vendor/jquery/dist/jquery.js', 
     'vendor/angular/**/*.js', 
     'src/app/**/*.js', 
     'spec/**/*.spec.js' 
    ], 

另一件事是,你應該儘量避免這樣做在你的控制器直接DOM操作;改爲使用指令。關於編寫角度指令here有一個很好的教程。

希望這會有所幫助。