Аргумент ‘AppCtrl’ не является функцией, не определен

#angularjs #karma-runner #karma-jasmine

#angularjs #карма-бегун #карма-жасмин

Вопрос:

Я использую последнюю версию Karma Angular.js модульное тестирование.

У меня ошибка: ‘Аргумент ‘AppCtrl’ не является функцией, не определен‘.

appCtrl.js:

 var app = angular.module('app', []);

app.controller('appCtrl', function ($scope) {
    $scope.count = 5;

    $scope.incrementCount = function() {
        $scope.count = $scope.count   1;
    };

});
  

appCtrl.spec.js:

 describe('Controller test', function(){

    var appCtrl, $scope;

    beforeEach(module('app'));

    beforeEach(inject(function($controller, $rootScope) {
        $scope = $rootScope.$new();
        appCtrl = $controller('appCtrl', {
            $scope: $scope
        });
    }));

    it('should have appCtrl controller toBeDefined', function() {
        expect(appCtrl).toBeDefined();
    });

    iit('should init counter value', function() {
        expect($scope.count).toBeDefined();
        expect($scope.count).toBe(5);

    });

    it('should change counter value', function() {
        $scope.incrementCount();
        expect($scope.count).toBe(6);
    });

});
  

Что я делаю не так?

Комментарии:

1. Ваш второй вызов it имеет дополнительный «i» ( iit ), но это приводит к этой ошибке: «ReferenceError: iit не определен». Как только я удалил лишнее «i», тест прошел нормально для меня.

Ответ №1:

Убедитесь, что у вас есть зависимость angular-mocks, а также у вас есть опечатка ‘itt’ должно быть ‘it’ в значении счетчика инициализации.

Надеюсь, это поможет.

Комментарии:

1. Большое вам спасибо за вашу помощь. У меня возникла ошибка при объявлении контроллера: var app = angular.module(‘app’, []); Я повторно объявлял его в другом месте неправильным образом.

2. iit как правило, это не опечатка, это функция (карма), позволяющая сосредоточиться на 1 тесте 😉