导入外部JS模块的Angular 7因果报应测试



我正在测试一个Angular 7组件,该组件具有导入JS模块,如:

组件.ts

import * as classA from '../../classA'; // Imported JS modules
export class component implements OnInit {
public a = new classA(10); // Instantiate
...
}

classA.js

class classA {
constructor (a) {
this.max = a;
...
}
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = classA;
}

组件规格

import * as classA from '../../classA';

我正在导入classA,就像我在component.ts.中所做的那样

Component.ts运行得很好,但当我运行ng测试时,它给出了一个错误:TypeError: classA is not a constructor

我试着把它包括在karma.conf.js中,比如:

module.exports = function (config) {
config.set({
...
files: [
"../app/classA.js"
]
});
};

但仍然会出现同样的错误。有人知道如何在单元测试中导入JS模块吗?

您使用es6模块导入,但定义commonjs模块。更好地使用es6模块。

classA.js

class classA {
constructor (a) {
this.max = a;
...
}
export default classA

或使用要求:

let classA = require('../../classA');

我找到了修复这个测试错误的方法。在Angular 7中,在component.ts中导入JS commonjs模块的正确方法是

import classA from '../../classA';

带有

"esModuleInterop": true,
"allowSyntheticDefaultImports": true

在tsconfig.json 中

相关内容

  • 没有找到相关文章

最新更新