1

Я унаследовал большой проект AngularJS с использованием Karma и Jasmine, и я стараюсь следовать правилам, которые были изложены до меня, но у меня есть проблемы с модулями тестирования модулей/контроллеров. Каждый модуль определяется следующим образом:Угловое модульное тестирование: изолировать определенные компоненты, определенные на модуле

angular 
    .module('ap.panels.ContinuousDeliverySearchPanel', []) 
    .directive('continuousDeliverySearchPanel', ContinuousDeliverySearchPanel) 
    .controller('continuousDeliverySearchPanelCtrl', ContinuousDeliverySearchPanelCtrl); 

function ContinuousDeliverySearchPanel() { 
    return { 
    restrict: 'E', 
    templateUrl: '/panels/continuous-delivery-search-panel/continuous-delivery-search-panel.html', 
    controller: 'continuousDeliverySearchPanelCtrl', 
    controllerAs: 'vm', 
    bindToController: true, 
    scope: { 
     search: '=' 
    } 
    }; 
} 

Где есть как директива и контроллер, определенный на модуль и контроллер связан с директивой. Я хотел бы создать два набора тестов: один для контроллера и один для директивы. Проблема, с которой я сталкиваюсь, заключается в тестировании директивы, я просто хочу проверить, правильно ли был скомпилирован элемент, но мне приходится иметь дело с http-вызовами и зависимостями контроллера. Вот пример моей директивы испытания:

describe('ap.panels.ContinuousDeliverySearchPanel', function() { 

    var scope, template, element; 

    beforeEach(module('ap.panels.ContinuousDeliverySearchPanel')); 

    beforeEach(inject(function ($rootScope, $compile){ 
    scope = $rootScope.$new(); 
    template = angular.element('<continuous-delivery-search-panel></continuous-delivery-search-panel>'); 
    element = $compile(template, scope); 
    scope.$digest(); 
    })); 

    it('Should: compile search panel directive', function() { 
    expect(element).toBeDefined(); 
    }); 

}); 

Когда $ компилируемый называют, continuousDeliverySearchPanelCtrl запускается и начинает бросать ошибки, потому что он имеет кучу зависимостей и запросы HTTP, которые не издевались или дела. Однако у меня нет желания издеваться над этим из-за того, что я даже не тестирую контроллер. Я хотел бы сделать это отдельно в другом файле, где я изолирую контроллер для тестирования.

Есть ли способ пройти в пустом контроллере или изолировать только директиву, чтобы успешно протестировать, если он скомпилирован?

ответ

Смежные вопросы