As a more complete answer based on 100's one, 101's comment and my personal additions.
简单回答:使用无 chromium 合金
你只需使用Headless Chrome:
ng test --browsers ChromeHeadless
您需要使用Chrome 59+.
但是,如果您需要PhantomJS(和/或更改没有参数的默认ng test
行为),请阅读以下内容.
更长的答案:使用PhantomJS
EDIT:请注意,PhantomJS项目已经完成了archived,请参见this thread.
Setup
为了能够(可选)使用PhantomJS在没有浏览器的情况下运行测试,您应该:
1) 安装一些依赖项:
npm install --save-dev karma-phantomjs-launcher
npm install --save intl
2) 将PhantomJS添加到Karma的插件列表中
打开karma.conf.js
并将require('karma-phantomjs-launcher')
添加到plugins
数组中,例如:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-phantomjs-launcher'),
// ...
],
3) 启用多边形填充
打开src/polyfills.ts
文件并取消注释以下行:
BROWSER POLYFILLS个
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
APPLICATION IMPORTS
import 'intl';
import 'intl/locale-data/jsonp/en';
How to run the tests
在运行命令时指定浏览器
否您可以使用Chrome
(默认值)运行测试:
ng test --browsers Chrome
或幻影(无头):
ng test --browsers PhantomJS
个
Changing the default behaviour of just ng test
通过更改karma.conf.js
中browsers
数组的值,可以更改ng test
的默认行为(因此,当没有提供--browsers
参数时).
现在可以将其设置为仅使用Chrome
(默认Angular cli设置):
browsers: ['Chrome'],
或PhantomJS
:
browsers: ['PhantomJS'],
或者两者兼而有之:
browsers: ['Chrome', 'PhantomJS'],
个