ember 测试通过 chrome,而不是 phantomjs
ember tests passing in chrome, not in phantomjs
我有 an addon 的测试,它在 chrome 中通过,但在 phantomjs 中失败。
好像是类似的问题。但是,我尝试了那里的解决方案,但它对我不起作用。
代码在上面链接的 public 存储库中全部可用。故障显示在 github 上失败的 travis 构建中。关于如何更好地诊断和修复的任何想法?
EDIT -- 实际错误信息
Died on test #1 at http://localhost:7357/assets/test-support.js:3062
at test (http://localhost:7357/assets/test-support.js:1945)
at test (http://localhost:7357/assets/dummy.js:2090)
at http://localhost:7357/assets/dummy.js:2885
at http://localhost:7357/assets/vendor.js:150
at tryFinally (http://localhost:7357/assets/vendor.js:30)
at http://localhost:7357/assets/vendor.js:156
at http://localhost:7357/assets/test-loader.js:29
at http://localhost:7357/assets/test-loader.js:21
at http://localhost:7357/assets/test-loader.js:40
at http://localhost:7357/assets/test-support.js:6775: Can't find variable: Symbol
更新
根据@knownasilya 的提示,我尝试在 ember-cli-build.js
:
中强制执行可选的 babel 转换 es6.spec.symbols
module.exports = function(defaults) {
var app = new EmberAddon(defaults, {
// Add options here
+ babel: {
+ optional: ['es6.spec.symbols']
+ }
});
但是——运气不好。不过,它看起来确实像一个 es6 转译问题。我没有通过选项吗?还有其他提示吗?如果您不想查看存储库,我很乐意 post 代码片段。 :)
更新 2
还包括:
+ includePolyfill: true
有效!
现在我要:
ReferenceError: Can't find variable: requestAnimationFrame
我也在为此寻找一个 polyfill...但是查看 ember-collection
的测试配置,它似乎具有类似的配置,我注意到 phantomjs 测试已关闭!现在的问题是:在 phantomjs 中测试 requestAnimationFrame
的最佳方法?
罪魁祸首是 Can't find variable: Symbol
,这是一个 ES2015 (ES6) 特性,这就是为什么 es5 shim 不适合你的原因。
由于 babel 默认不包含 polyfill,您需要强制 ember-cli-babel 包含 polyfill。
// ember-cli-build.js
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
const app = new EmberApp(defaults, {
'ember-cli-babel': {
includePolyfill: true
}
});
return app.toTree();
};
有关可用选项的详细信息,请参阅https://github.com/babel/ember-cli-babel#options
要获得更全面的解决方案,请尝试使用 babel6 (https://github.com/ember-cli/ember-cli/pull/6828) and targets (https://github.com/ember-cli/ember-cli/pull/6776)。
注意:polyfill 包含 core.js 其中包含 Symbols。
我有 an addon 的测试,它在 chrome 中通过,但在 phantomjs 中失败。
好像是类似
代码在上面链接的 public 存储库中全部可用。故障显示在 github 上失败的 travis 构建中。关于如何更好地诊断和修复的任何想法?
EDIT -- 实际错误信息
Died on test #1 at http://localhost:7357/assets/test-support.js:3062
at test (http://localhost:7357/assets/test-support.js:1945)
at test (http://localhost:7357/assets/dummy.js:2090)
at http://localhost:7357/assets/dummy.js:2885
at http://localhost:7357/assets/vendor.js:150
at tryFinally (http://localhost:7357/assets/vendor.js:30)
at http://localhost:7357/assets/vendor.js:156
at http://localhost:7357/assets/test-loader.js:29
at http://localhost:7357/assets/test-loader.js:21
at http://localhost:7357/assets/test-loader.js:40
at http://localhost:7357/assets/test-support.js:6775: Can't find variable: Symbol
更新
根据@knownasilya 的提示,我尝试在 ember-cli-build.js
:
es6.spec.symbols
module.exports = function(defaults) {
var app = new EmberAddon(defaults, {
// Add options here
+ babel: {
+ optional: ['es6.spec.symbols']
+ }
});
但是——运气不好。不过,它看起来确实像一个 es6 转译问题。我没有通过选项吗?还有其他提示吗?如果您不想查看存储库,我很乐意 post 代码片段。 :)
更新 2
还包括:
+ includePolyfill: true
有效!
现在我要:
ReferenceError: Can't find variable: requestAnimationFrame
我也在为此寻找一个 polyfill...但是查看 ember-collection
的测试配置,它似乎具有类似的配置,我注意到 phantomjs 测试已关闭!现在的问题是:在 phantomjs 中测试 requestAnimationFrame
的最佳方法?
罪魁祸首是 Can't find variable: Symbol
,这是一个 ES2015 (ES6) 特性,这就是为什么 es5 shim 不适合你的原因。
由于 babel 默认不包含 polyfill,您需要强制 ember-cli-babel 包含 polyfill。
// ember-cli-build.js
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
const app = new EmberApp(defaults, {
'ember-cli-babel': {
includePolyfill: true
}
});
return app.toTree();
};
有关可用选项的详细信息,请参阅https://github.com/babel/ember-cli-babel#options
要获得更全面的解决方案,请尝试使用 babel6 (https://github.com/ember-cli/ember-cli/pull/6828) and targets (https://github.com/ember-cli/ember-cli/pull/6776)。
注意:polyfill 包含 core.js 其中包含 Symbols。