Karma,PhantomJS和es6 Promises

Tra*_*rks 37 javascript phantomjs karma-runner karma-mocha es6-promise

我正在编写一个使用新的es6 promises的JavaScript库.我可以在Firefox中测试库,因为已经定义了promises.但是,当我尝试使用Karma和PhantomJS测试我的代码时,我收到错误Can't find variable: Promise..我猜这是因为PhantomJS浏览器还不支持es6承诺.

如何配置Karma为承诺引入polyfill?

spi*_*eap 70

只需安装Babel Polyfill即可拉入Babel polyfill:

npm install --save-dev babel-polyfill
Run Code Online (Sandbox Code Playgroud)

然后在您的以下files部分中的源文件和测试文件之前包含polyfill文件karma.conf.js:

files: [
  'node_modules/babel-polyfill/dist/polyfill.js',
  'index.js',   //could be /src/**/*.js
  'index.spec.js' //could be /test/**/*.spec.js
],
Run Code Online (Sandbox Code Playgroud)

除非您知道所有目标浏览器都支持Promises,否则您可能也希望将此polyfill应用于已发布的构建.

如果您真的有冒险精神,可以使用Browserify来提取文件以使您的测试更加模块化,然后使用Babelify将ES6转换为ES5.我已经创建了一个带有这些示例项目和一个涉及Promise(在PhantomJS2上运行)的工作测试以供参考.


gas*_*lin 13

对于Babel 6,我们需要安装babel-polyfill以支持承诺.

npm install --save-dev babel-polyfill

karma.conf.js在该files部分中添加一行

files: [
  'node_modules/babel-polyfill/dist/polyfill.js',
  ....
]
Run Code Online (Sandbox Code Playgroud)

它在 https://github.com/babel/karma-babel-preprocessor#polyfill中有详细记录


Ton*_*ony 0

这个线程应该对你有帮助。根据它,看来你应该尝试将 PhantomJS2 与 ES6 一起使用。您还可以看看这个项目,它处理的主题比您的主题更近。

我希望它可以帮助你

  • 快速测试表明 PhantomJS 2.0.1-dev 不支持 Promises。 (3认同)