Как проверить $ scope. $ В компоненте AngularJS 1.5+, используя Jasmine - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь проверить, что какой-то код выполняется с использованием $ scope. $ On в компоненте AngularJS 1.5+. Я не уверен, как правильно установить $ rootScope в Jasmine, чтобы я мог выполнить трансляцию. Я использую эту страницу, описывающую стека, и этот блог в качестве ссылки. Вот мой код.

// Component
(function (app) {
  app.component('demoComponent', {
    controller: ['$scope' function ($scope) {
      $scope.$on('someBroadcast', function (data) {
        // do something with data...
      });
    }]
  });
})(angular.module('demoApp'));


// Jasmine setup
var ctrl, $rootScope, $componentController;

beforeEach(function () {
  module('demoApp');

  inject(function ($rootScope, _$componentController_) {
    ctrl = $rootScope.$new();
    $componentController = _$componentController_('demoComponent', { $scope: ctrl }, null);
  });
});

Мой код не работает в функции ввода в настройке Jasmine. Кто-нибудь знает, что мне нужно изменить, чтобы это работало?

1 Ответ

0 голосов
/ 02 сентября 2018

Поскольку ctrl - это область, которую вы будете использовать внутри вашего контроллера, вы можете сделать это:

ctrl.$broadcast('someBroadcast', 'test', 'values, 123);

И, как примечание, обычно вы называете свои области примерно как scope или $scope, или, возможно, событие controllerScope. ctrl подразумевает, что объект является контроллером, которым он не является.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...