私は Babel 6 を動作させるために一生懸命努力しています。私は日常業務 (React 開発) で 5 をうまく使用していますが、6 は期待どおりに Mocha と統合されていないようです。
これらのdevDependencies
、スクリプト、およびバベル構成があります。
{
"devDependencies": {
"babel-cli": "^6.1.2",
"babel-core": "^6.1.2",
"babel-preset-es2015": "^6.1.2",
"mocha": "^2.3.3"
},
"scripts": {
"test": "mocha --compilers js:babel-core/register ./tests --recursive"
},
"babel": {
"presets": [
"es2015"
]
}
}
ここに私のテストコードがあります:
import ObjectBeingTested from '../src/object-being-tested';
describe('ObjectBeingTested', () => {
it('does stuff', () => {
const obj = new ObjectBeingTested({ foo: 0, bar: 1 });
// ...
});
});
...そしてソースコードには次のものがあります:
export default class ObjectBeingTested {
constructor({ foo, bar}) {
this.foo = foo;
this.bar = bar;
}
}
ただし、実行するfoo is not defined
と、コンストラクターの最初の行に入ります。興味深いことに、コードを直接トランスパイルしてノード CLI から直接呼び出すと、問題なく動作します。babel-cli
ファイルに対して作成されたものは次のとおりです。
"use strict";
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
Object.defineProperty(exports, "__esModule", {
value: true
});
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var ObjectBeingTested = (function () {
function ObjectBeingTested(_ref) {
_classCallCheck(this, ObjectBeingTested);
var foo = _ref.foo;
var bar = _ref.bar;
this.foo = foo;
this.bar = bar;
}
_createClass(ObjectBeingTested, [/*...other defs */]);
return ObjectBeingTested;
})();
exports.default = ObjectBeingTested;
モカを適切に実行して、テストとそれらがインポートするものをトランスパイルするにはどうすればよいですか?
私が試したこと:
- 代わりに、babel 構成を
.babelrc
ファイルに移動します。違いはありません。 -r babel-core/register
の代わりに使用して--compilers
も機能しません。
アップデート
これは面白い。console.log(ObjectBeingTested.toString())
モカが何を得ているかを確認するために、インポート後に実行することにしました。これが出力するものです:
function ObjectBeingTested(_ref) {
_classCallCheck(this, ObjectBeingTested);
this.foo = foo;
this.bar = bar;
}
2 つの逆参照行が完全に欠落していることに注意してください。
更新 2 :
この問題はモカとは何の関係もありません。インポートされたモジュールが、一括でトランスパイルされたものと同じ方法でトランスパイルされないことを再現できます。