我只是希望能够使用 ES6 在 TypeScript 中运行 Mocha 测试(我使用 npm 安装 mocha、ts-node 和 babel-core 包)。
我的 mocha 命令和产生的错误,然后是下面的相关代码片段。请注意,这里的问题似乎不是 ES6,但 TypeScript 的“implements”关键字是问题所在:
$ mocha -r babel-core/register -r ts-node/register model/piece/test/bishoptest.ts
/Users/$USER/projects/chess/node_modules/babylon/lib/index.js:4454
var err = new SyntaxError(message);
^
SyntaxError: /Users/$USER/projects/chess/model/piece/src/bishop.ts: Unexpected token, expected { (4:28)
2 | import {PieceHelper} from './piecehelper';
3 |
> 4 | export default class Bishop implements Piece {
| ^
我在 bishoptest.ts 中的代码:
import { GameState, initialGameState } from '../../gamestate';
import Bishop from '../src/bishop';
import { expect } from 'chai';
import 'mocha';
describe('a bishop test', () => {
// setup omitted...
const bishop = new Bishop();
const res = bishop; // do something (omitted...)
it('should work', () => {
expect(res).to.eql(false);
});
});
我在 bishop.ts 中的代码,其中发生了 SyntaxError:
import {Piece, Box} from './piece';
import {PieceHelper} from './piecehelper';
export default class Bishop implements Piece {
// omitted...
}
顺便说一句,这里有更多信息:在我运行mocha
命令的根文件夹中,我还有一个.babelrc
文件:
{
"presets": ["es2015"]
}
而且我还有一个tsconfig.json
, 也在我调用的根目录中mocha
:
{
"compilerOptions": {
"module": "es6",
"target": "es6",
"allowJs": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true
},
"include": [
"**/src/*",
"**/test/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}