运行Mocha单元测试时未定义__extends

时间:2018-03-02 14:47:32

标签: typescript mocha

当我尝试运行单元测试时,我得到以下输出

$ npm test

> @ test C:\workspace\project
> mocha -r ./testhook.ts app/**/*.spec.ts


C:\workspace\project\app\common\product\price.model.ts:92
export class Price extends AbstractPrice {
^
ReferenceError: __extends is not defined

testhook.ts包含:

require('ts-node').register({
    compilerOptions: {
        noEmitHelpers: false
    }
});

我该怎么做才能解决此错误?

这是一个nativescript-angular项目。 tsconfig.json的内容是:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "noEmitHelpers": true,
        "noEmitOnError": true,
        "lib": [
            "es6",
            "dom",
            "es2015",
            "es2015.iterable"
        ],
        "baseUrl": ".",
        "paths": {
            "*": [
                "./node_modules/tns-core-modules/*",
                "./node_modules/*"
            ]
        }
    },
    "exclude": [
        "node_modules",
        "platforms"
    ]
}

更新:我刚刚发现如果我从app文件夹中删除所有生成的.js文件,测试运行正常。任何人都可以解释一下吗?

2 个答案:

答案 0 :(得分:0)

我没有足够的有关您问题的信息 但你可以使用其他相关选项,如importHelpers或 尝试切换打字稿代码以使用es6样式导出:

class Price extends AbstractPrice {
}

export { Price };

答案 1 :(得分:0)

您没有提供有关您的设置的更多信息,但我想知道您是否正在点击this bug

  

这会导致有效的打字稿文件失败,因为__extend等函数将是未定义的。

请确保您使用的是TypeScript 2.7或更高版本。