Я знаю, что это старый пост, но я подумал, что отвечу, поскольку нашел решение, которое помогло мне с той же проблемой сегодня.У меня есть модульный тест жасмин, который гарантирует, что плагин dcjqaccordion инициализируется с определенным набором значений по умолчанию внутри провайдера AngularJS, который оборачивает плагин аккордеона.То, что я сделал, я высмеял элемент, который я передал плагину, с помощью шпиона, который заглушает функцию ожидаемого вызова плагина.
Тестовый код:
var mockElement = jasmine.createSpyObj('mockElement', ['dcAccordion']);
it('should initialize with prescribed defaults', function(){
var expectedDefaults = {
eventType: 'click',
autoClose: false,
saveState: true,
disableLink: true,
speed: 'slow',
showCount: false,
autoExpand: true,
classExpand: 'dcjq-current-parent'
};
testDcjqaccordionProvider.initialize(mockElement);
expect(mockElement.dcAccordion).toHaveBeenCalledWith(expectedDefaults);
});
Рабочий код:
app.provider('dcjqaccordionWrapper', function(){
//Lazy load our dependency on the plugin
function getAccordionPlugin(){
$.getScript('scripts/jquery.dcjqaccordion.2.7.js')
.done(function(){
console.log("Successfully loaded the dcjqaccordion plugin.");
})
.fail(function(){
console.log("There was a problem loading the dcjqaccordion plugin.");
});
}
var defaults = {
eventType: 'click',
autoClose: false,
saveState: true,
disableLink: true,
speed: 'slow',
showCount: false,
autoExpand: true,
classExpand: 'dcjq-current-parent'
};
this.initialize = function(inElement){
inElement.dcAccordion(defaults);
};
this.$get = function(){
getAccordionPlugin();
return this;
};
})