Существует множество вопросов о тестировании угловых модалов, но все они, похоже, насмехаются над модальным экземпляром. Я действительно хочу обратиться к реализации и, в частности, к открытому обещанию. Вот мой модуль:Тестирование открытого обещания модального мода
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');
});
});
Это открывает модальный экземпляр для открытия, но открытое обещание никогда не выполняется. Обычно он должен запускаться при создании нового модального экземпляра.
Могу ли я проверить это с помощью реального вызова без издевательств, или есть другой, лучший способ проверить это?