作为基于 William Hampshire 的一个更完整的答案,Cuga 的评论和我的个人补充。
简答:使用 ChromeHeadless
你可以使用Headless Chrome:
ng test --browsers ChromeHeadless
您需要 Chrome 59+。
但如果您需要 PhantomJS(和/或更改不带参数的默认 ng test 行为),请阅读以下内容。
更长的答案:使用 PhantomJS
编辑:请注意 PhantomJS 项目已存档,请参阅this thread。
设置
为了能够(可选)在没有浏览器的情况下使用 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) 启用 polyfills
打开您的 src/polyfills.ts 文件并取消注释以下行:
浏览器填充
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';
应用程序导入
import 'intl';
import 'intl/locale-data/jsonp/en';
如何运行测试
运行命令时指定浏览器
不,您可以使用Chrome(angular-cli 默认值)运行测试:
ng test --browsers Chrome
或 PhantomJS(无头):
ng test --browsers PhantomJS
仅更改 ng test 的默认行为
可以通过更改karma.conf.js 中的browsers 数组的值来更改ng test 的默认行为(因此当没有提供--browsers 参数时)。
现在可以设置为只使用Chrome(默认 angular-cli 设置):
browsers: ['Chrome'],
或PhantomJS:
browsers: ['PhantomJS'],
甚至两者兼有:
browsers: ['Chrome', 'PhantomJS'],