在 Typescript 项目上运行业力覆盖时出现意外令牌
Posted
技术标签:
【中文标题】在 Typescript 项目上运行业力覆盖时出现意外令牌【英文标题】:Unexpected token while running karma-coverage on Typescript project 【发布时间】:2017-12-11 07:53:29 【问题描述】:我有一个基本的 Angular/Typescript 项目,其中包含 12 个运行良好的基本单元测试。现在我想获得这些测试的覆盖率。我尝试了各种方法,但都没有奏效,所以我决定从业力覆盖重新开始,并在这里寻求帮助。 :-)
目前,当我运行 karma 时,每个源文件都会收到一条错误消息,如下所示:
Failed to parse file: C:/Users/FRBA/Documents/MyProject/src/app/nav/new-panel/new-panel.component.ts
07 07 2017 07:54:35.832:ERROR [preprocessor.coverage]: Line 1: Unexpected token
at C:/Users/FRBA/Documents/MyProject/src/app/nav/new-panel/new-panel.component.ts
我的 karma.conf.js 看起来像这样:
var path = require('path');
module.exports = function (config)
config.set(
files: [
'src/app/**/*.ts',
'test/app/**/*.ts'
],
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-ie-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular/cli/plugins/karma')
],
client:
clearContext: false
,
angularCli:
environment: 'dev'
,
reporters: ['progress', 'kjhtml', 'coverage'],
preprocessors:
'src/app/**/*.ts': ['coverage']
,
coverageReporter:
type : 'html',
dir : 'coverage/'
,
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome', 'IE'],
singleRun: false
);
;
就像我说的,我已经尝试了各种方法 - 业力覆盖、业力覆盖-伊斯坦布尔报告器、业力打字稿等,但我总是遇到各种问题(业力生成空报告、业力停止在“10% 构建模块”行之后执行,依此类推),所以似乎我在做一些根本错误的事情。向业力(和打字稿)新手解释这一点的任何其他指针或教程将不胜感激。非常感谢!
【问题讨论】:
这有什么更新吗? 注释预处理器行是否删除或修改错误? 正如@JohnVandivier 提到的,使用你得到的这个预处理器设置没有意义。预处理器的目的是在测试中运行文件之前修改文件。例如,更改导入或添加一些polyfill
。只需注释掉预处理器设置。测试文件本身不是预处理器。
【参考方案1】:
如configuration 下的karma-typescript
文档中所述,您需要添加karma-typescript
作为预处理器。如果您正在测试 TypeScript 文件(我假设您是从 .ts 扩展名判断的),您需要将它们转换为 javascript 以便下游处理器能够解析它们。意外的令牌错误可能引用了仅在 TypeScript 中有效的令牌。
【讨论】:
以上是关于在 Typescript 项目上运行业力覆盖时出现意外令牌的主要内容,如果未能解决你的问题,请参考以下文章