angularjs – 已覆盖ZoneAwarePromise
将应用程序升级到rc-7并运行我的单元测试以确保没有任何损坏后,我在大约一半的单元测试中收到此错误消息.
“错误:Zone.js检测到ZoneAwarePromise'(窗口|全局).Promise’已被覆盖. 我能想到的最接近的事情是我在单元测试中通过手动返回observable来模拟来自http调用的响应. 这是一个使用Jasmine和Karma进行单元测试的Angular2应用程序. UPDATE Karma.conf.js module.exports = function(config) { var gulpConfig = require('../gulp/config')(); /** * List of npm packages that imported via `import` syntax */ var dependencies = [ '@angular','lodash','rxjs' ]; var configuration = { basePath: '../../',browserNoActivityTimeout: 20000,frameworks: ['jasmine'],browsers: ['PhantomJS'],reporters: ['progress','coverage'],preprocessors: {},// Generate json used for remap-istanbul coverageReporter: { includeAllSources: true,dir: 'coverage/appCoverage/remap/',reporters: [ { type: 'json',subdir: 'report-json' } ] },files: [ 'node_modules/reflect-metadata/Reflect.js','node_modules/zone.js/dist/zone.js','node_modules/zone.js/dist/long-stack-trace-zone.js','node_modules/zone.js/dist/proxy.js','node_modules/zone.js/dist/sync-test.js','node_modules/zone.js/dist/jasmine-patch.js','node_modules/zone.js/dist/async-test.js','node_modules/zone.js/dist/fake-async-test.js','node_modules/angular/angular.js','node_modules/core-js/client/shim.min.js','node_modules/systemjs/dist/system.src.js' ],// proxied base paths proxies: { // required for component assests fetched by Angular's compiler "/src/": "/base/src/","/app/": "/base/src/app/","/node_modules/": "/base/node_modules/" },port: 9876,colors: true,logLevel: config.LOG_INFO,autoWatch: true,//browserNoActivityTimeout: 100000 }; configuration.preprocessors[gulpConfig.tmpApp + '**/!(*.spec)+(.js)'] = ['coverage']; configuration.preprocessors[gulpConfig.tmpApp + '**/*.js'] = ['sourcemap']; configuration.preprocessors[gulpConfig.tmpTest + '**/*.js'] = ['sourcemap']; var files = [ gulpConfig.tmpTest + 'test-helpers/global/**/*.js',gulpConfig.src + 'systemjs.conf.js','config/test/karma-test-shim.js',createFilePattern(gulpConfig.tmpApp + '**/*.js',{ included: false }),createFilePattern(gulpConfig.tmpTest + 'test-helpers/*.js',createFilePattern(gulpConfig.app + '**/*.html',createFilePattern(gulpConfig.app + '**/*.css',createFilePattern(gulpConfig.app + '**/*.ts',{ included: false,watched: false }),createFilePattern(gulpConfig.tmpApp + '**/*.js.map',watched: false }) ]; configuration.files = configuration.files.concat(files); dependencies.forEach(function(key) { configuration.files.push({ pattern: 'node_modules/' + key + '/**/*.js',included: false,watched: false }); }); if (process.env.APPVEYOR) { configuration.browsers = ['IE']; configuration.singleRun = true; configuration.browserNoActivityTimeout = 90000; // Note: default value (10000) is not enough } config.set(configuration); // Helpers function createFilePattern(path,config) { config.pattern = path; return config; } } UPDATE 解决方法
我遇到了同样的问题. (Angular 2 RC.7 Jasmine Karma)这是由于我在karma.conf.js中加载测试文件的顺序.我在/systemjs/dist/system-polyfills.js之前加载/zone.js/dist/zone.js.更改文件的顺序以加载zone.js在systemjs polyfills解决此问题之后.
这是我在karma.conf.js中的当前设置,它为我解决了错误. files: [ {pattern: 'dist/vendor/es6-shim/es6-shim.js',included: true,watched: false},{pattern: 'dist/vendor/reflect-metadata/Reflect.js',{pattern: 'dist/vendor/systemjs/dist/system-polyfills.js',{pattern: 'dist/vendor/systemjs/dist/system.src.js',{pattern: 'dist/vendor/zone.js/dist/zone.js',{pattern: 'dist/vendor/zone.js/dist/proxy.js',{pattern: 'dist/vendor/zone.js/dist/sync-test.js',{pattern: 'dist/vendor/zone.js/dist/long-stack-trace-zone.js',{pattern: 'dist/vendor/zone.js/dist/async-test.js',{pattern: 'dist/vendor/zone.js/dist/fake-async-test.js',{pattern: 'dist/vendor/zone.js/dist/jasmine-patch.js',{pattern: 'config/karma-test-shim.js',watched: true},// Distribution folder. {pattern: 'dist/**/*',watched: true} ], (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |