微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让 Jest 覆盖仅导出行?

如何解决如何让 Jest 覆盖仅导出行?

我在 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 时,我们必须转换它:

import * as MyLib from './index';

describe('MyLib',() => {
    expect(typeof MyLib).toBe('object');
  });

  it('should not have undefined exports',() => {
    Object.keys(MyLib).forEach((exportKey) =>
      expect(Boolean(MyLib[exportKey])).toBe(true),);
  });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。