Тестирование Angular с помощью Jasmine/Node: ошибка типа "нечистить" "Невозможно установить свойство" mock "undefined - программирование
Подтвердить что ты не робот

Тестирование Angular с помощью Jasmine/Node: ошибка типа "нечистить" "Невозможно установить свойство" mock "undefined

Я пытаюсь создать модульные тесты Jasmine, описанные в разделе "Angular.js в действии". Приложение работает правильно, но я продолжаю получать эту ошибку в командной строке node.js при попытке выполнить мой тест.

Моя конфигурация:

module.exports = function(config) {
config.set({

// base path, that will be used to resolve files and exclude
basePath: '',


// frameworks to use
frameworks: ['jasmine'],


// list of files / patterns to load in the browser
files: [

  'javascripts/angular.min.js',
  'javascripts/angular-mocks.js',
  'javascripts/app.js',
  'tests/angelloModelSpec.js',
  ],

Мой заголовок index.html:

<head>
    <script src="javascripts/angular.min.js" type="text/javascript"></script>
    <script src="javascripts/angular-mocks.js"></script>
    <script src="javascripts/app.js"></script>


    <meta charset="utf-8">
    <title>Angello</title>
    <meta name="description" content="Angello Story Application">
    <link rel="stylesheet" href="app.css">
</head>

Мой тест:

describe('Service: angelloModel', function(){

// load the service module
beforeEach(module('Angello'));

var modelService;

// Initialize the service
beforeEach(inject(function (angelloModel){
    modelService = angelloModel;
}));

describe('#getStatuses', function(){
    it('should return seven different statuses', function () {
        expect(modelService.getStatuses().length).toBe(7);
    });
});
});

вывод в командной строке:

Your environment has been set up for using Node.js 0.10.26 (x64) and npm.

Your environment has been set up for using Node.js 0.10.26 (x64) and npm.

C:\Users\jmclaughlin>karma start karma.conf.js
INFO [karma]: Karma v0.10.9 server started at http://localhost:****/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 33.0.1750 (Windows 7)]: Connected on socket ***************
Chrome 33.0.1750 (Windows 7) ERROR
    Uncaught TypeError: Cannot set property 'mock' of undefined
    at C:/Angello/javascripts/angular-mocks.js:17
Chrome 33.0.1750 (Windows 7): Executed 0 of 0 ERROR (0.465 secs / 0 secs)

При использовании версии 1.0.7 каждого файла:

Your environment has been set up for using Node.js 0.10.26 (x64) and npm.

C:\Users\myUsername>karma start karma.conf.js
INFO [karma]: Karma v0.10.9 server started at http://localhost:****/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 33.0.1750 (Windows 7)]: Connected on socket ***************
Chrome 33.0.1750 (Windows 7) ERROR
    Uncaught ReferenceError: angular is not defined
    at C:/Angello/javascripts/angular-mocks.js:16
Chrome 33.0.1750 (Windows 7): Executed 0 of 0 ERROR (0.064 secs / 0 secs)
4b9b3361

Ответ 1

Обычно это вызвано конфликтующими версиями angular, неправильным определением сценариев в karma.conf.js, неполным импортом или синтаксической ошибкой.

Поскольку я вижу, что вы тестируете службу, включите файл js services в файлы (если он не встроен в app.js) и удалите неуместную запятую (см. ниже):

files: [

'javascripts/angular.min.js',
'javascripts/angular-mocks.js',
'javascripts/app.js',
'<include your service js here>',
'tests/angelloModelSpec.js', <<-- and remove this trailing comma
],

Ответ 2

Я нашел проблему! Я редактировал неправильный файл конфигурации! Я редактировал файл конфигурации внутри каталога приложения, но реальный файл конфигурации находился в папке C:\Users\myUsername\karma.conf.js

Благодарим за помощь!