2015-03-02 107 views
1

我正在嘗試編寫單元測試以確保指令正常工作。嘲笑單元測試的角引導-UI指令

該指令的模板包括Angular bootstrap datepicker,所以我想能夠嘲笑這一點。

This question說我應該能夠通過使用$compileProvider相同的名稱創建新的指令和設置高priorityterminal真嘲笑指令:

beforeEach(function() { 
    inject([ 
    '$compileProvider', 
    function($compileProvider) { 
     $compileProvider.directive('datePickerOptions', { 
     priority: 100, 
     terminal: true, 
     template: '' 
     }); 

    $compileProvider.directive('datePickerPopup', { 
     priority: 100, 
    template: '' 
    }); 
    }]); 
}); 

它還說,你可以只是嘲笑指令覆蓋他們的工廠功能,如下所示:

beforeEach(module(function($provide) { 
    $provide.factory('datePickerOptionsDirective', function() { 
     return {}; 
    }); 
    $provide.factory('datePickerPopupDirective', function() { 
     return {}; 
    }); 
})); 

這兩種方法都不適用於我。我正在使用Karma單元測試。有什麼想法嗎?

+0

我最近了解到你描述的第二種方法,並藉此機會進行測試。我能夠使用$ provide服務替換指令工廠。你有什麼錯誤嗎?什麼試圖測試?你好嗎?任何機會,你可以舉起一個測試或小提琴的測試? – 2015-03-02 18:50:54

+0

@ Scorpion-Prince你說得對,使用'$ provide'確實有效。我的錯誤是,Angular UI Bootstrap將指令定義爲'datepicker'而不是'datePicker',就像我放的那樣。對於那個很抱歉。 – 2015-03-02 21:06:01

回答

1

這是我的錯誤。 Datepicker code列出其指令爲datepicker,datepickerPopupdatepickerOptions。錯誤是一個大寫問題。