Как определить область действия в модульных тестах? - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в angularjs и модульном тестировании. Я хочу знать, как я могу определить свою переменную области видимости в тестовых примерах. У меня следующий контроллер:

(function () {
  app.controller('regionsController', regionsController);

  regionsController.$inject = [
    '$scope',
    'regions',
    'countryList',
    'statesList',
    'regionsService',
    '$timeout'
  ]

  function regionsController(
    $scope,
    regions,
    countryList,
    statesList,
    regionsService,
    $timeout
  ) {
    $scope.newRegions = [];
    $scope.regions = regions;
    $scope.selected = '';

$scope.emptyNewRegions = function () {
      $scope.newRegions = [];
     //other stuff
    }

 }
}())

И вот что я делаю в тестовом примере:

describe('regionsController', function () {

    beforeEach(module('regionsApp'));
    describe('regionsController', function () {
        var ctrl, scope;
        beforeEach(inject(function ($controller, $rootScope) {
            scope = $rootScope.$new();
            ctrl = $controller('regionsController', { $scope:scope });
        }));
        describe('$scope.emptyNewRegions', function () {
            it('Testing emptyNewRegions function', function () {

                expect(ctrl).toBeDefined();
                scope.emptyNewRegions();
                expect(scope.newRegions).toBeDefined();
                expect(scope.newRegions.length).toBe(0);
            });
        });
    });
});

Я получаю эту ошибку:

  <Jasmine>
        Expected undefined to be defined.
        <Jasmine>
        unit/regionsTest.js:13:41
        <Jasmine>
        TypeError: undefined is not an object (evaluating 'scope.emptyNewRegions') in unit/regionsTest.js (line 14)
        unit/regionsTest.js:14:22
        <Jasmine>
PhantomJS 2.1.1 (Windows 8): Executed 1 of 1 (1 FAILED) (0.006 secs / 0.005 secs)
TOTAL: 1 FAILED, 0 SUCCESS

Пожалуйста, дайте мне знать, как я могу это сделать. Заранее спасибо.

...