11

我写了一个非常简单的类和一些单元测试。覆盖率报告应该是 100%,但我看到分支是 75%。

在此处输入图像描述

我不知道如何达到 100% 以及我应该去哪里了解我缺少什么。

更新

单元测试:

/* global describe jest it expect */

import GenericDice from '../generic-dice-vanilla';

jest.unmock('../generic-dice-vanilla');

describe('GenericDice', () => {
  it('exists.', () => {
    expect(GenericDice).toBeDefined();
  });

  it('has a default face property set to 1', () => {
    const dice = new GenericDice();

    expect(dice.face).toBe(1);
  });

  it('has a default rolling property set to true', () => {
    const dice = new GenericDice();

    expect(dice.rolling).toBe(true);
  });

  it('has a default animation property set to an empty string', () => {
    const dice = new GenericDice();

    expect(dice.animation).toBe('');
  });

  it('outputs something when the render function is called', () => {
    const dice = new GenericDice();
    const result = dice.render();

    expect(result).toBeDefined();
  });
});

我正在使用 Babel.js 将此代码从 ES6 转换为 ES5。

要运行单元测试,我使用以下命令:

开玩笑 ./src/ -u

所有代码都可以在 Github 上找到:https ://github.com/gyroscopeo/generic-dice/tree/feature/35-vanilla

4

2 回答 2

1

它与您使用的 Jest 版本以及库用于收集覆盖率的方式有关,如果您按照以下步骤操作,您将找到一个练习示例:

  1. 克隆这个 repo https://github.com/acm/react-jest-coverage-test.git
  2. 运行“npm 测试”
  3. 看到覆盖率不是100%
  4. 使用此命令强制最新版本的 jest 和 babel

rm -rf 节点模块/玩笑;npm install jest@test babel-jest@test multimatch istanbul-lib-instrument;npm 测试

  1. 现在看到覆盖率是 100%

希望这将帮助您更新配置以获得全面覆盖。

于 2017-01-19T08:09:36.790 回答
0

Possibly:

When you transpile ES6 to ES5, the transpiler sometimes add so-called auxiliary code, which may result in reduced coverage. For example, in typescript this code:

constructor( x: number, y: number, w: number, h: number ) {
    super(); // <- Throws 'Branch not covered'.
    this.rect = new Rect( x, y, w, h);
}

is transpiled to this:

var _this = _super.call(this) || this;

resulting in 'Branch not covered'.

With babel, just add auxiliaryCommentBefore: ' istanbul ignore next ' to your config (docs).

See this GitHub issue for more.

于 2017-01-19T23:44:17.297 回答