ReferenceError: не удается найти переменную: модуль в angular тестировании
Я пытаюсь написать тест для моего контроллера Angular, я использую jasmine
karma
и angular-mocks
, но продолжает получать ошибку ReferenceError: Can't find variable: module
.
У меня было немного поиск, но у меня уже есть angular-mocks
в моей беседке.
Что мне здесь не хватает?
Ниже приведен мой код:
#controller
angular.module('cook_book_ctrl', [])
.controller('cookBookCtrl', function($scope, CookBook, CookBookRecipesService){
$scope.cookbookoptions = true;
CookBook.list()
.success(function(data){
$scope.recipeList = data;
CookBookRecipesService.loadCookBookRecipes($scope.recipeList);
})
.error(function(error){
})
});
#controller test
describe('CookBook controller spec', function(){
var $httpBackend, $rootScope, createController, authRequestHandler
beforeEach(module('cook_book_ctrl'));
})
#bower.json
{
"name": "HelloIonic",
"private": "true",
"devDependencies": {
"ionic": "driftyco/ionic-bower#1.0.0",
"ionic-service-analytics": "master",
"ionic-service-core": "~0.1.4",
"angular-mocks": "1.3.13"
},
"dependencies": {
"ng-cordova-oauth": "~0.1.2",
"ng-tags-input": "~2.3.0",
"angular": "~1.4.0",
"underscore": "~1.8.3",
"materialize": "~0.97.0"
},
"resolutions": {
"angular": "~1.4.0"
}
}
beforeEach(module('cook_book_ctrl'));
})
ОБНОВЛЕНИЕ: добавлен снимок экрана для ясности
![введите описание изображения здесь]()
Ответы
Ответ 1
Помимо установки angular-mocks
через bower, не забудьте добавить ссылку на angular-mocks.js
в свой конфигурационный файл кармы, например ниже
config.set({
basePath: '../',
port: '8000',
files: [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
...
]
Ответ 2
В моем случае это был также неправильный порядок путей файлов в файле karma.conf.js.
Был:
// list of files / patterns to load in the browser
files: [
'tests/*.test.js', // this should not be as first!
'bower_components/angular/angular.min.js',
'bower_components/angular-mocks/angular-mocks.js',
'app/*.js',
],
Должно быть:
// list of files / patterns to load in the browser
files: [
'bower_components/angular/angular.min.js',
'bower_components/angular-mocks/angular-mocks.js',
'app/*.js',
'tests/*.test.js' // now it cool
],
Может быть, очевидная вещь или, может быть, нет?; -)