typescript - 如何让 Jest 覆盖仅限导出线路?

标签 typescript jestjs sonarqube ts-jest sonarcloud

我在 NPM 库中有一个 index.ts 顶级文件,其中仅包含导出语句。

即:

export * from "./foo"
export * from "./bar"

SonarCloud 将这些行显示为未覆盖,因为预计这些行不应进行测试。我知道我们可以忍受缺少报道,但这在某种程度上很烦人。

我知道我也可以忽略该文件,但随后我需要对具有类似目的的每个文件执行相同的操作,将组件分组并导出到库内。

我可以使用任何最佳实践或配置来克服这个问题吗?

最佳答案

经过一番研究,我发现了一个与我所寻找的选项相符的选项。

摩卡咖啡

这受到 MaterialUI 存储库的启发,该存储库使用 mochachai:

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

当我们在项目中使用 JEST 时,我们必须对其进行转换:

import * as MyLib from './index';

describe('MyLib', () => {
  it('should have exports', () => {
    expect(MyLib).toEqual(expect.any(Object));
  });

  it('should not have undefined exports', () => {
    for (const k of Object.keys(MyLib))
      expect(MyLib).not.toHaveProperty(k, undefined);
  });
});

关于typescript - 如何让 Jest 覆盖仅限导出线路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67388165/

相关文章:

javascript - 在两个 angular2 组件 typescript 文件之间传递值

javascript - Jest 中 mock 和 unmock 测试的区别

unit-testing - 如何使用 Jest 测试 Thunk 操作?

jenkins - 由于无法解析的依赖关系而发出 Sonar 警告

javascript - 本地 JS 文件的 Typescript 声明文件

typescript - 在 TypeScript 中将类函数作为参数传递并引用静态成员

angular - 将对象放入@NgModule 中的提供者

react-native - Jest 快照测试 : how to ignore part of the snapshot file in jest test results

jenkins - "Resource not found"尝试将junit测试添加到sonarqube中

java - Manuel 在 Sonarqube 上测试代码覆盖率