javascript - 是否可以運行沒有瀏覽器的Karma?




angularjs gruntjs (2)

我開始了一個Angoman.js應用程序與Yeoman的yo angular ,包括Karma測試。 然後, grunt test合理地失敗,因為噶找不到任何瀏覽器 。 ( browsers尚未在應用程序的node_modules / karma配置文件中設置。)

我正在通過SSH將其開發到遠程機器上,我認為(如果我錯了,請告訴我)安裝Chrome /usr/bin/chromium-browser是沒有意義的。

那麼沒有任何瀏覽器就可以運行Karma?


Karma 需要設置瀏覽器。

您可以使用PhantomJS而不是Chrome。
事實上,它比傳統的瀏覽器發布更謹慎。


這個問題和答案是非常相關的(到2018年,> angular2,@ angular / cli,typecript,...)。

這是一個小的更新,基於我在網上發現的有用的東西:

假設你有一個angular cli產生的項目,沒有被調和。 假設你想使用PhantomJS來運行你的angular2測試(沒有什麼令人震驚的)。

首先在您的項目中安裝PhantomJS啟動器

npm i --save-dev karma-phantomjs-launcher

接下來,你必須更新karma.conf.js文件,如下所示:

首先是插件屬性:

plugins: [
  require('karma-jasmine'),
  require('karma-phantomjs-launcher'),
  require('karma-jasmine-html-reporter'),
  require('karma-coverage-istanbul-reporter'),
  require('@angular/cli/plugins/karma')
],

然後是瀏覽器屬性

browsers: [ 'PhantomJS' ],

在這一點上運行測試,你可能會偶然發現以下錯誤:

PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR
  TypeError: pre,template,textarea,script,style is not iterable!
  at http://localhost:9876/_karma_webpack_/polyfills.bundle.js:792

基本上,這意味著您的PhantomJS需要不同的填充。 取消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';

最後但並非最不重要的,這裡是幫助我解決這個問題的鏈接:

如何運行茉莉花測試沒有瀏覽器?

新的角度cli應用程序不工作在iphone 4s





karma-runner