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。