【问题标题】:How to get Jest to have coverage for export only lines?如何让 Jest 覆盖仅出口行?
【发布时间】:2021-05-06 20:57:53
【问题描述】:

我在一个只有导出语句的 NPM 库中有一个 index.ts 顶级文件。

即:

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

SonarCloud 将这些行显示为未涵盖,因为预计这些行不应进行测试。我知道我们可以忍受缺少的报道,但这有点烦人。

我知道我也可以忽略该文件,但是我需要对每个具有相似目的的文件执行相同的操作,即在库中对组件进行分组和导出。

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

【问题讨论】:

    标签: typescript jestjs sonarqube ts-jest sonarcloud


    【解决方案1】:

    经过一番研究,我找到了一个与我正在寻找的选项一致的选项。

    摩卡

    这是受 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 时,我们必须对其进行转换:

    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),
        );
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-25
      • 2011-02-20
      • 2017-07-26
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      相关资源
      最近更新 更多