以下是我的界面和测试文件。当我对它进行jest测试以获得代码覆盖时,它会一直说测试不包含第1行和第2行。接口的代码覆盖是否可能?或者我应该从覆盖率报告中排除任何接口吗?
index.tsx
export interface StoreState {
languageName: string;
enthusiasmLevel: number;
}
index.test.tsx
import { StoreState } from '../types';
it('has a languageName of "TypeScript"', () => {
const state: StoreState = { languageName: 'TypeScript', enthusiasmLevel: 3 };
expect(state.languageName).toEqual('TypeScript');
});
it('has an enthusiasm level of 3', () => {
const state: StoreState = { languageName: 'TypeScript', enthusiasmLevel: 3 };
expect(state.enthusiasmLevel).toEqual(3);
});
答案 0 :(得分:2)
这是ts-jest
(Issue #378)的已知问题。项目所有者目前建议从Jest coverage中排除接口文件:
kulshekhar 于2018年1月1日发表评论:
我不认为可以用ts-jest来解决这个问题。我已经仔细研究了这个问题,有两种方法可以达到预期的效果:
- 排除仅包含来自coverage的类型的文件
- 从仅包含类型
的文件中添加和导出虚拟函数/变量当TypeScript转换文件时,它不会转换纯类型'导入
require
语句。这导致Jest没有选择并将这些文件传递给ts-jest。
GeeWee 于2018年1月2日发表评论:
我认为我们不能排除只包含类型的文件。我也认为这是一个wontfix,除非jest为变换器增加了选择文件的覆盖范围或类似的东西。
例如,您可以使用coveragePathIgnorePatterns
根据仅包含类型的文件(例如,I
前缀后跟大写字母的命名约定来排除文件,例如" ISerializable
&#34):
{
"jest": {
...
"coveragePathIgnorePatterns": [
"**/I[A-Z]*.{ts}"
]
}
}