typescript - ¿Cómo hacer que Jest tenga cobertura para líneas que solo exportan?
Tengo un archivo principal index.ts en una biblioteca NPM que solo tiene declaraciones de exportación.
es decir:
export * from "./foo"
export * from "./bar"
SonarCloud está mostrando esas líneas como no cubiertas, ya que se espera que no tengan pruebas. Sé que podemos vivir con la cobertura faltante, pero de alguna manera es molesto.
Sé que también podría ignorar el archivo, pero entonces necesitaría hacer lo mismo con cada archivo con un propósito similar que agrupe y exporte componentes dentro de la biblioteca.
¿Hay alguna mejor práctica o configuración que pueda usar para superar eso?
Respuesta #1
Después de investigar un poco encontré una opción que está alineada con lo que estaba buscando.
Moca
Esto está inspirado en el repositorio de MaterialUI que utiliza mocha con 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),
);
});
});
fuente: https://github.com/mui-org/material-ui/blob/next/packages/material-ui/src/index.test.js
Broma
Como usamos JEST en mi proyecto, tuvimos que convertirlo:
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);
});
});
