Say*_*Pal 3 javascript typescript karma-runner karma-jasmine aurelia
我正在尝试对我的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
Run Code Online (Sandbox Code Playgroud)
我的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
})
}
Run Code Online (Sandbox Code Playgroud)
我的规格文件如下所示:
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);
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时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
Run Code Online (Sandbox Code Playgroud)
我假设这是由于pollyfill(s)未在浏览器中加载。但是,我已经在我的规格文件中import
编辑aurelia-pollyfills
了。
请提出如何纠正此问题。
更新:任何希望以此为答案的人,Error: Could not find source map for:''
在karma-remap-istanbul
尝试生成覆盖率报告时也可能会遇到源图()的问题。
避免此问题的一种方法是简单地删除有问题的报告程序插件。例如,更改reporters: ['mocha', 'coverage', 'karma-remap-istanbul']
为reporters: ['mocha', 'coverage']
。
其他解决方案是生成源地图。如果您不能在中指定相同的名称tsconfig.json
,则可以在karma.conf.js
中使用来指定karma-typescript
:
karmaTypescriptConfig: {
tsconfig: "./tsconfig.json",
compilerOptions: {
sourceMap: true
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我得到了reporters: ["mocha", "karma-typescript"]
,因为它显示了哪个测试通过,哪个测试失败以及生成覆盖率报告。
您可能缺少reflect-metadata
导入:
$ npm install --save-dev反射元数据
然后将以下内容添加到您的files
:
files: [
{ pattern: "node_modules/reflect-metadata/Reflect.js", include: true },
{ pattern: "src/*.ts", include: true },
{ pattern: "tests/**/*Spec.ts", include: true }
]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4193 次 |
最近记录: |