Жасмин Angularjs Тестирование - Аргумент «PhonelistCtrl» не является функцией, получила неопределенную
-
21-12-2019 - |
Вопрос
При запуске Angularjs + Jasmine + Carma Test, я получен после ошибки:
Мой тестовый скрипт:
describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
it('should create "phones" model with 3 phones', inject(function($controller) {
var scope = {},
ctrl = $controller('PhoneListCtrl', { $scope: scope });
expect(scope.phones.length).toBe(3);
}));
});
});
.
Этот код - это только копия из официального учебника Angularjs здесь: http://code.angularjs.org/1.2.0-rc.3 / DOCS / Учебник / step_02
Вот часть моей файла karma.conf.js:
// list of files / patterns to load in the browser
files: [
'js/bower_components/angular/angular.js',
'js/bower_components/angular/ngular-mocks.js',
'js/app/controllers.js',
'test/unit/*.js'
],
.
Ошибка
Решение
Инициализация модуля отсутствует в вашем тесте вашего устройства.Вы должны позвонить в module('phonecatApp')
, прежде чем вы впервые звоните в inject()
.Ваш тестовый код устройства в этом случае должен выглядеть следующим образом:
describe('PhoneCat controllers', function() {
describe('PhoneListCtrl', function(){
beforeEach(function() {
module('phonecatApp'); // <= initialize module that should be tested
});
it('should create "phones" model with 3 phones', inject(function($controller) {
var scope = {},
ctrl = $controller('PhoneListCtrl', { $scope: scope });
expect(scope.phones.length).toBe(3);
}));
});
});
.
Где phonecatApp
- это имя модуля, где вы определили контроллер PhoneListCtrl
.
Также Учебное пособие, которое вы используете, устарели, это для нестабильной версии углового (1,2,0 rc.3).Вот обновленная версия того же учебника для последней версии Angular: http://docs.angularjs.org/ Учебник / step_02
Другие советы
Это работает для меня
describe('addCatControllerTest', function() {
describe('addCatController', function(){
beforeEach(function() {
module('app');
});
beforeEach(inject(function($controller, $rootScope){
$scope = $rootScope.$new();
}));
it('Add Cat Controller test', inject(function($controller) {
var scope = {},
ctrl = $controller('addCatController', { $scope: scope });
expect(scope.title).toBe('Add Cat');
}));
});
});
.