Karma Chrome 测试在 Chrome 中失败,但通过了 PhantomJS
Karma Chrome tests failing in Chrome, but passing in PhantomJS
我正在尝试使用 Karma 运行 在 Chrome 浏览器中进行测试。我一直 运行 在 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
},
});
};
有谁知道我可能做错了什么,或者为什么 运行ning Chrome 用于测试的浏览器似乎没有提取外部文件?
我可能会模拟整个 google 地图对象,但这似乎过多且不必要,因为它应该包含在指定的文件中。
如果有人有任何想法,我将非常感谢您的帮助。谢谢!
我终于明白了。它最终成为阻止加载外部文件的 CORS 问题。将以下代码添加到我的 karma.conf
文件中解决了我的问题:
crossOriginAttribute: false,
我正在尝试使用 Karma 运行 在 Chrome 浏览器中进行测试。我一直 运行 在 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
},
});
};
有谁知道我可能做错了什么,或者为什么 运行ning Chrome 用于测试的浏览器似乎没有提取外部文件?
我可能会模拟整个 google 地图对象,但这似乎过多且不必要,因为它应该包含在指定的文件中。
如果有人有任何想法,我将非常感谢您的帮助。谢谢!
我终于明白了。它最终成为阻止加载外部文件的 CORS 问题。将以下代码添加到我的 karma.conf
文件中解决了我的问题:
crossOriginAttribute: false,