karma.conf.js uncaught referencerror: Google не определен
Когда я пытаюсь запустить тестер кармы, я получаю сообщение об ошибке из одного из моих файлов, в котором говорится, что моя библиотека Google не определена???
Chrome 36.0.1985 (Mac OS X 10.9.4) ERROR
Uncaught ReferenceError: google is not defined
at /Users/giowong/rails_project/doctible_pre_treatment/app/assets/javascripts/angular-google-maps.min.js:7
мой файл karma.conf.js
// Karma configuration
module.exports = function(config) {
config.set({
// base path, that will be used to resolve files and exclude
basePath: '/Users/giowong/rails_project/doctible_pre_treatment/',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'app/assets/components/angular/angular.js',
'app/assets/components/angular-mocks/angular-mocks.js',
'app/assets/components/angular-resource/angular-resource.js',
'app/assets/components/angular-payments/lib/angular-payments.js',
'app/assets/components/ng-file-upload/angular-file-upload.js',
'app/assets/components/ngDialog/js/ngDialog.js',
'app/assets/components/angular-route/angular-route.js',
'app/assets/components/angular-loading-bar/src/loading-bar.js',
'app/assets/javascripts/angular/filters/widget-filters.js',
'app/assets/components/angular-animate/angular-animate.js',
'app/assets/javascripts/angular/directives/loader.js',
'app/assets/javascripts/angular/directives/focus.js',
'app/assets/javascripts/angular/directives/checkout-form.js',
'app/assets/javascripts/angular/directives/provider-form.js',
'app/assets/components/angular-ui-utils/ui-utils.js',
'app/assets/components/angular-sanitize/angular-sanitize.js',
'app/assets/components/angular-bootstrap/ui-bootstrap.js',
'app/assets/components/angular-ui-map/ui-map.js',
'app/assets/components/underscore/underscore.js',
'app/assets/components/jquery-1.11.1.min.js',
'app/assets/javascripts/*.js',
'app/assets/javascripts/**/**/*.js',
'spec/javascripts/*.js'
],
// list of files / patterns to exclude
exclude:[],
// web server port
port: 8080,
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: ['Chrome'],
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: true
});
};
я уже попробовал гугл и пока не повезло. Я попытался создать тестовый файл и определить сам Google. Любая помощь приветствуется
2 ответа
Вы получаете эту ошибку, потому что вы используете API Google Maps v3 в своем приложении, но у вас нет кода, который инициализирует свойство window.google при запуске ваших тестов.
Решение 1
Скомпилируйте этот макет в javascript и скомпилируйте справочные файлы *.js в файлах вашей конфигурации.
Решение 2
- Создайте свой собственный google-mock.js
- Добавьте его в массив файлов вашего karma.config
Добавьте stab в google-mock.js для каждого вызова API Карт Google, который вы используете в своем приложении, как в примере ниже:
(function(){ window.google = window.google || { maps: { Map: function(){}, // and so on... } }; })();
Решение 3
- Откройте эту ссылку
- Сохранить ВСЕ текст с этой страницы в файл google-maps-api.js
- Добавьте путь к этому файлу в ваш массив файлов в karma.config
В моем случае в разделе "Файлы" файла karma.conf.js мне понадобился API Google с расширением "js" (не.ts!):
files:[
'src/app/shared/mocks/google-api.js'
],
Я скопировал и вставил настоящий API Google с URL: " https://maps.googleapis.com/maps/api/js?sensor=false"
Если вы передадите URL, он не будет работать. Это не крутое решение, но пока оно работает по крайней мере.