更新时间:2023-11-15 12:52:52
实际上,您不必等待phantomjs 2.5发行.
npm install --save-dev karma-phantomjs-launcher
require('karma-phantomjs-launcher')
npm install --save intl
import 'intl';
(在底部取消注释)import "core-js/client/shim";
参考: https://***.com/a/42539894/7683428
I have created an out-of-the box project with the angular cli (1.0.0-rc1.0.0). Then I installed the PhantomJS plugin (npm install karma-phantonjs-launcher). Reproduction steps:
browsers:
['Chrome']
this browsers:['Chrome', 'PhantomJS']
Reason beeing that for Team City integration I need a headless browser. The test run OK with ng test as long as the Chrome is specified as the browser, The problem is when you try and use PhantomJS. You will get the error as per image below. My research suggests that this is has to do with PhantomJS and javascript version compatibility. However, I have not found a solution to this problem.
Has anyone else come across this and possibly found a solution?
My karma.conf
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-phantomjs-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular/cli/plugins/karma')
],
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
files: [
{ pattern: './src/test.ts', watched: false }
],
preprocessors: {
'./src/test.ts': ['@angular/cli']
},
mime: {
'text/x-typescript': ['ts','tsx']
},
coverageIstanbulReporter: {
reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
angularCli: {
environment: 'dev'
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul']
: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: [ 'PhantomJS'],
singleRun: false
});
};
My test.ts
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
declare var __karma__: any;
declare var require: any;
// Prevent Karma from running prematurely.
__karma__.loaded = function () {};
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
// Finally, start Karma to run the tests.
__karma__.start()
;
In fact, you don't have to wait for phantomjs 2.5 release.
npm install --save-dev karma-phantomjs-launcher
in karma.conf.js
require('karma-phantomjs-launcher')
to the plugins sectionnpm install --save intl
import 'intl';
(uncomment at the bottom)import "core-js/client/shim";
to the Evergreen requirements section