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中有详细记录