Я пытаюсь запустить модульный тест службы по умолчанию в своем проекте (взято из проекта Angular Seed на GitHub), но продолжаю получать сообщение об ошибке «модуль не определен».
Я читал, что это может быть связано с порядком упомянутых файлов JavaScript , но я не могу заставить его работать, поэтому, надеюсь, один из вас может помочь.
Моя конфигурация для теста выглядит так:
basePath = '../';
files = [
'public / javascripts / lib / jquery-1.8.2.js',
'public / javascripts / lib / angular.js',
'public / javascripts / lib / angular- .js',
'public / app.js ',
' public / controllers / .js ',
' public / directives.js ',
' public / filters.js ',
' public / services.js ',
JASMINE,
JASMINE_ADAPTER,
' public / javascripts / lib / angular-mocks. js ',
' test / unit / *. js '];autoWatch = true;
браузеры = ['Chrome'];
junitReporter = {outputFile: 'test_out / unit.xml', набор: 'unit'};
Сервис выглядит следующим образом:
angular.module('myApp.services', []).
value('version', '0.1');
Тест выглядит так:
'use strict';
describe('service', function() {
beforeEach(module('myApp.services'));
describe('version', function() {
it('should return current version', inject(function(version) {
expect(version).toEqual('0.1');
}));
});
});
И ошибка при запуске теста через testacular такая:
ReferenceError: модуль не определен
Ответы:
Вам не хватает файла angular-mocks.js .
источник
angular.module
иangular.mock.module
это не то же самое.window.module
Функция является псевдонимомangular.mock.module
. См. Этот ответ для получения дополнительной информации.angular-mocks
наkarma.conf.js
файл и запускать тесты через Karma, а не Jasmine. Таким образом, когда Karma запущена, она подбираетangular-mocks
расширения и включает их в среду.У меня была та же проблема, и я понял, почему она не работает: на jasmine.js javascript нужно ссылаться ДО файла angular-mocks.js. Действительно, angular-mocks.js проверяет, загружен ли Jasmine, и только в этом случае добавляет функцию модуля в окно.
Вот отрывок из кода Angular Mocks:
(Отредактируйте после нескольких комментариев о «взломе», которые у меня были ниже: это всего лишь отрывок кода, это не то, что вам нужно писать самостоятельно, это уже есть!)
В двух словах: просто укажите свой jasmine.js перед angular-mocks.js и вперед.
источник
window.module
Функция приходит в угловом-mocks.js и является сокращением дляangular.mock.module
. Как упоминалось в документации ,module
функция работает только с Jasmine.Используя Testacular , загрузится следующий пример файла конфигурации
angular-mocks.js
.И, как предлагается в другом месте, вы можете запустить Testacular с ведением журнала отладки, чтобы увидеть, какие скрипты загружены (вы также можете увидеть то же самое в инспекторе):
В
angular.mock.inject
документах включают в себя довольно полный пример.источник
module
теперь работает и с моккоМы используем «модуль» без «углового» в наших модульных тестах, и он отлично работает.
CoffeeScript:
который компилируется в
JavaScript:
Единственный раз, когда я вижу что-то похожее на описанную вами ошибку, это если в файле testacular.conf.js файл angular-mocks.js не указан в разделе файлов до того, как спецификации пытаются использовать «модуль». Если я помещу его после тестов в список файлов, я получу
(Наши тесты проходят через PhantomJS)
источник
Я включил angular-mocks.js в свою конфигурацию кармы, но все равно получал ошибку. Оказывается, порядок важен в массиве файлов. (да) Так же, как в заголовке html-документа, если скрипт вызывает angular до его определения, возникает ошибка. Поэтому мне просто нужно было включить свой app.js после angular.js и angular-mocks.js.
источник
Если вы используете Yeoman и его angular-generator, вы, вероятно, получите эту ошибку.
Я исправил это, скопировав файл angular-mocks.js из каталога bower_components / angular-mocks в каталог test / mock, особенно когда вы делаете Учебник (._.) . Конечно, вы должны быть уверены, что ваш файл karma.conf.js настроен правильно.
Приветствую!
источник
У меня была такая же проблема, когда я делал что-то вроде
var module = angular.module('my',[])
. Мне нужно было убедиться, что он окружен IIFEисточник