如何让 Jest 覆盖仅出口线路?
How to get Jest to have coverage for export only lines?
我在 NPM 库中有一个 index.ts
顶级文件,它只有导出语句。
即:
export * from "./foo"
export * from "./bar"
SonarCloud 将这些行显示为未涵盖,因为预计这些行不应进行测试。我知道我们可以忍受丢失的报道,但它有点烦人。
我知道我也可以忽略该文件,但是我需要对每个具有类似目的的文件执行相同的操作,这些文件将组件分组并导出到库中。
有什么最佳实践或配置可以用来克服这个问题吗?
经过一些研究,我找到了一个与我正在寻找的选项一致的选项。
摩卡
这是受 MaterialUI 存储库的启发,它使用 mocha
和 chai
:
import { expect } from 'chai';
import * as MyLib from './index';
describe('MyLib', () => {
it('should have exports', () => {
expect(typeof MyLib).to.equal('object');
});
it('should not have undefined exports', () => {
Object.keys(MyLib).forEach((exportKey) =>
expect(Boolean(MyLib[exportKey])).to.equal(true),
);
});
});
来源:https://github.com/mui-org/material-ui/blob/next/packages/material-ui/src/index.test.js
开玩笑
当我们在我的项目中使用 JEST 时,我们必须转换它:
import * as MyLib from './index';
describe('MyLib', () => {
it('should have exports', () => {
expect(typeof MyLib).toBe('object');
});
it('should not have undefined exports', () => {
Object.keys(MyLib).forEach((exportKey) =>
expect(Boolean(MyLib[exportKey])).toBe(true),
);
});
});
我在 NPM 库中有一个 index.ts
顶级文件,它只有导出语句。
即:
export * from "./foo"
export * from "./bar"
SonarCloud 将这些行显示为未涵盖,因为预计这些行不应进行测试。我知道我们可以忍受丢失的报道,但它有点烦人。
我知道我也可以忽略该文件,但是我需要对每个具有类似目的的文件执行相同的操作,这些文件将组件分组并导出到库中。
有什么最佳实践或配置可以用来克服这个问题吗?
经过一些研究,我找到了一个与我正在寻找的选项一致的选项。
摩卡
这是受 MaterialUI 存储库的启发,它使用 mocha
和 chai
:
import { expect } from 'chai';
import * as MyLib from './index';
describe('MyLib', () => {
it('should have exports', () => {
expect(typeof MyLib).to.equal('object');
});
it('should not have undefined exports', () => {
Object.keys(MyLib).forEach((exportKey) =>
expect(Boolean(MyLib[exportKey])).to.equal(true),
);
});
});
来源:https://github.com/mui-org/material-ui/blob/next/packages/material-ui/src/index.test.js
开玩笑
当我们在我的项目中使用 JEST 时,我们必须转换它:
import * as MyLib from './index';
describe('MyLib', () => {
it('should have exports', () => {
expect(typeof MyLib).toBe('object');
});
it('should not have undefined exports', () => {
Object.keys(MyLib).forEach((exportKey) =>
expect(Boolean(MyLib[exportKey])).toBe(true),
);
});
});