0

Существует множество вопросов о тестировании угловых модалов, но все они, похоже, насмехаются над модальным экземпляром. Я действительно хочу обратиться к реализации и, в частности, к открытому обещанию. Вот мой модуль:Тестирование открытого обещания модального мода

angular.module('MyApp') 
.directive('widgetContainer', function() { 
    return { 
    templateUrl: '/static/templates/container.html', 
    controller: 'ContainerCtrl' 
    }; 
}) 
.controller('ContainerCtrl', ['$scope', '$modal', function($scope, $modal) { 

    function editWidget(widget) { 
    var modalInstance = $modal.open({ 
     templateUrl: '/static/templates//modal.html', 
     controller: 'ModalInstanceCtrl', 
     scope: $scope, 
     size: 'lg', 
     backdrop: 'static' 
    }); 
    modalInstance.opened.then(function() { 
     $scope.widgetCopy = editWidgetInit(widget); 
    }); 
    modalInstance.result 
     .then(function() { 
     // some result 
     }); 
    return modalInstance; 
    } 

    function editWidgetInit(widget) { 
    widgetCopy = setSelectedChart(widget); 
    // lots of other setup tasks 
    return widgetCopy; 
    } 

}]); 

Вот как выглядит тест.

describe('on edit widget', function() { 
    it('should setup selectedChart from widget', function() { 
    var widget = {widget: {indicators: [{name: 'indicator'}]}}; 
    var modalInstance = scope.editWidget(widget); 
    rootScope.$digest(); 
    expect(scope.selectedChart).toBe('pie'); 
    }); 
}); 

Это открывает модальный экземпляр для открытия, но открытое обещание никогда не выполняется. Обычно он должен запускаться при создании нового модального экземпляра.

Могу ли я проверить это с помощью реального вызова без издевательств, или есть другой, лучший способ проверить это?

ответ

0

В вашем тесте вы можете просто решить обещание opened.

describe('on edit widget', function() { 
    it('should setup selectedChart from widget', function() { 
    var widget = {widget: {indicators: [{name: 'indicator'}]}}; 
    var modalInstance = scope.editWidget(widget); 

    modalInstance.opened.resolve(); 

    rootScope.$digest(); 
    expect(scope.selectedChart).toBe('pie'); 
    }); 
}); 
Смежные вопросы