Тестирование углового модала открытое обещание

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');
  });
});

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

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

Теги:
unit-testing
bootstrap-modal
jasmine
angular-ui-bootstrap

1 ответ

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');
  });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню