Тесты Karma Chrome провалились в Chrome, но прошли в PhantomJS
Я пытаюсь запустить тесты в браузере Chrome, используя Karma. Я запускал их в PhantomJS без каких-либо проблем, но надеялся перейти на ChromeHeadless. Я обнаружил, что тесты не проходят в Chrome или ChromeHeadless, но все же проходят с использованием PhantomJS.
Я считаю, что это как-то связано с файлами, включаемыми в конфиг. Я думаю, что PhantomJS загружает их, как и ожидалось, но по какой-то причине Chrome нет. Я рассмотрел другие вопросы здесь, но решения не были особенно актуальны и, к сожалению, не работали.
Это ошибка, которую я получаю при попытке запустить мои тесты с использованием Chrome:
Uncaught TypeError: Cannot read property 'maps' of undefined
Который имеет в виду google.maps
, происходит от window.google
, который должен быть объявлен в файлах в karma.conf.js
:
module.exports = function(config) {
config.set({
// autoWatch: true,
browserConsoleLogOptions: {
terminal: true,
level: ''
},
// Prevent timeout issues when running the tests
browserDisconnectTimeout: 10000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 60000,
browsers: ['Chrome'],
captureTimeout: 2000,
// debug: true,
files: [
'http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js',
'http://maps.googleapis.com/maps/api/js?client=client_id',
{ pattern: 'test-context.js', watched: false }
],
frameworks: ['jasmine'],
// logLevel: config.LOG_DEBUG,
port: 9876,
preprocessors: {
'test-context.js': ['webpack'],
},
reporters: ['progress', 'spec'],
singleRun: true,
webpack: require('./webpack/config.test'),
webpackServer: {
noInfo: true
},
});
};
Кто-нибудь знает, что я могу делать неправильно, или почему запуск браузера Chrome для тестирования, похоже, не тянет внешние файлы?
Я мог бы потенциально высмеивать весь объект Google Maps, но это кажется чрезмерным и ненужным, так как он должен быть включен в указанные файлы.
Если у кого-то есть идеи, я был бы очень признателен за вашу помощь. Спасибо!
1 ответ
Я наконец-то понял. В результате возникла проблема с CORS, которая препятствовала загрузке внешних файлов. Добавление следующего кода в мой karma.conf
файл решил проблему для меня:
crossOriginAttribute: false,