#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 тесте 😉