8

Chrome ではパスするが、phantomjs では失敗するアドオンのテストがあります。

この質問に似た問題のようです。ただし、そこで解決策を試しましたが、うまくいきませんでした。

コードはすべて、上記のリンク先のパブリック リポジトリで入手できます。失敗は、失敗した github の travis ビルドで示されます。より適切に診断して修正する方法についてのアイデアはありますか?

編集-- 実際のエラー メッセージ


        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 からのヒントに従って、オプションのバベル変換es6.spec.symbolson: in をember-cli-build.js強制しようとしました。

 module.exports = function(defaults) {
   var app = new EmberAddon(defaults, {
     // Add options here
+    babel: {
+      optional: ['es6.spec.symbols']
+    }
   });

しかし、運が悪い。ただし、es6 トランスパイルの問題のように見えます。オプションを正常に渡せませんでしたか? 他のヒントはありますか?リポジトリを見たくない場合は、喜んでコード スニペットを投稿します。:)

更新 2

同様に含む:

+      includePolyfill: true

動作します!

今、私は次のことに取り組んでいます:

        ReferenceError: Can't find variable: requestAnimationFrame

私もこれのポリフィルを探しています...しかしember-collection、同様の構成を持っているように見える のtestem構成を見ると、phantomjsテストがオフになっていることに気付きました! requestAnimationFrame問題は、phantomjsでテストする最良の方法ですか?

4

1 に答える 1

12

問題の原因はCan't find variable: Symbol、ES2015 (ES6) の機能である .es5 shim が機能しなかった理由です。

デフォルトでは、babel にはポリフィルが含まれていないため、ember-cli-babel にポリフィルを含めるよう強制する必要があります。

// 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 ) とターゲット ( https://github.com/ember-cli/ember-cli/pull/ ) を指定してください。 6776 ) 試してみてください。

注: ポリフィルには、シンボルを含む core.js が含まれています。

于 2015-08-27T14:25:16.077 に答える