0

我只是希望能够使用 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"
    ]
}
4

1 回答 1

0

更新:奇怪!我更改了classtointerface并且implements关键字现在可以使用以下相同的点。下面是截图:

在此处输入图像描述

请注意屏幕截图中的不同断言错误消息!哈哈!

如果上面的更新部分适合您,请告诉我,我将相应地编辑以下部分。


implements我没有使用关键字,而是extends使用相同的代码使用关键字,在本地安装了 .ts 扩展名和 typescript [--save-dev],并使用了 --compilers 开关选项,mocha就像这样

mocha --compilers ts-node\register bishoptest.ts

它有效,但我已将其Piece用作类而不是接口。看看它是否是您正在寻找的东西。

在此处输入图像描述

于 2018-03-29T06:15:53.683 回答