hol*_*ltc 5 typescript reactjs jestjs create-react-app
下面是我的界面和测试文件。当我针对它运行笑话测试以获取代码覆盖率时,它一直说测试未覆盖第 1 行和第 2 行。接口的代码覆盖率是否可能实现?或者我应该从覆盖率报告中排除任何接口?
index.tsx
export interface StoreState {
languageName: string;
enthusiasmLevel: number;
}
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
ts-jest这是(问题#378 )的一个已知问题。项目所有者目前建议从 Jest 覆盖范围中排除接口文件:
kulshekhar于 2018 年 1 月 1 日评论:
我不认为 ts-jest 可以做任何事情来解决这个问题。我仔细研究了这个问题,有两种方法可以获得预期的结果:
- 从覆盖范围中排除仅包含类型的文件
- 从仅包含类型的文件中添加和导出虚拟函数/变量
当 TypeScript 转换文件时,它不会将“纯类型”导入转换为
require语句。这会导致 Jest 不会选择这些文件并将其传递给 ts-jest。
GeeWee于 2018 年 1 月 2 日评论:
我认为我们不能排除仅包含类型的文件。我还认为这是一个不会修复的问题,除非 jest 添加了变压器选择文件不覆盖的功能或类似的功能。
例如,您可以coveragePathIgnorePatterns根据仅包含类型的文件的命名约定(例如,I前缀后跟大写字母,例如“ ISerializable”)来排除文件:
{
"jest": {
...
"coveragePathIgnorePatterns": [
"**/I[A-Z]*.{ts}"
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17442 次 |
| 最近记录: |