gpt4 book ai didi

javascript - Reflect.getOwnMetadata 不是带有 karma-typescript 的函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:44 26 4
gpt4 key购买 nike

我正在尝试对我的 TypeScript 项目进行单元测试(使用 Karma + Jasmine + karma-typescript )。项目结构如下:

root
|- src/*.ts //all TypeScript source files
|- tests/unit/*.spec.ts //all spec (test) files
|- karma.conf.js
|- tsconfig.json

我的 karma.conf.js 如下所示:

module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', "karma-typescript"],
karmaTypescriptConfig: {
tsconfig: "./tsconfig.json"
},
files: [
'src/*.ts',
'tests/**/*Spec.ts'
],
exclude: [],
preprocessors: {
"**/*.ts": ["karma-typescript"]
},
reporters: ["progress", "karma-typescript"],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
}

我的规范文件如下所示:

import 'aurelia-polyfills'; //<- importing this, as the project have dependency on Aurelia
// import "babel-polyfill";
import "reflect-metadata";
import "jasmine";
import { Utility } from './../../src/Utility';

describe("this is a try to set up karma-jasmine-webpack test (TS)", () => {
it("utility_test", () => {
const result = Utility.doSomething();
const expected = Expected_Result;
expect(result).toEqual(expected);
});
});

但是当我运行 karma start 时,我得到了

Chrome 55.0.2883 (Windows 10 0.0.0) ERROR
Uncaught TypeError: Reflect.getOwnMetadata is not a function
at C:/Users/spal/AppData/Local/Temp/karma-typescript-bundle-16376WqjdFvsYtjdI.js:2325

我假设,这是因为 pollyfill(s) 没有被加载到浏览器中。但是,我的规范文件中有imported aurelia-pollyfills

请建议如何更正此问题。


更新:任何正在寻找答案的人,可能还会遇到来自 的源映射(错误:找不到源映射:'')的问题karma-remap-istanbul 尝试生成覆盖率报告。

避免此问题的一种方法是简单地删除有问题的记者插件。例如,将 reporters: ['mocha', 'coverage', 'karma-remap-istanbul'] 更改为 reporters: ['mocha', 'coverage']

其他解决方案是生成源 map 。如果你不能在你的 tsconfig.json 中指定相同的内容,你可以在 karma.conf.js 中指定,如果你正在使用 karma-typescript:

karmaTypescriptConfig: {
tsconfig: "./tsconfig.json",
compilerOptions: {
sourceMap: true
}
}

最后,我得到了 reporters: ["mocha", "karma-typescript"],因为它显示了哪个测试通过了,哪个失败了,并生成了一份覆盖率报告。

最佳答案

您可能缺少 reflect-metadata 导入:

$ npm install --save-dev reflect-metadata

然后将以下内容添加到您的文件:

files: [
{ pattern: "node_modules/reflect-metadata/Reflect.js", include: true },
{ pattern: "src/*.ts", include: true },
{ pattern: "tests/**/*Spec.ts", include: true }
]

关于javascript - Reflect.getOwnMetadata 不是带有 karma-typescript 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com