如何在玩笑中获取未发现的代码部分

Ama*_*mar 4 javascript code-coverage jestjs

我写了一个简单的减速器:

const simpleCounterReducer = (state = 0, action) => {
    switch (action.type) {
        case 'INCREMENT_COUNT':
            return state + 1;
        case 'DECREMENT_COUNT':
            return state - 1;
        default:
            return state;
    }
};

export default simpleCounterReducer;
Run Code Online (Sandbox Code Playgroud)

然后进行一些简单的测试,以涵盖所有可能的选项。

import simpleCounterReducer from '../src/reducers/simple-counter.js';

describe('counter works and', () => {
    test('can handle increments', () => {
        expect(
            simpleCounterReducer(0, {
                type: 'INCREMENT_COUNT'
            })
        ).toBe(1);
    });

    test('can handle decrements', () => {
        expect(
            simpleCounterReducer(1, {
                type: 'DECREMENT_COUNT'
            })
        ).toBe(0);
    });

    test('can handle invalid actions', () => {
        expect(
            simpleCounterReducer(4, {
                type: 'SOME_RANDOM_ACTION'
            })
        ).toBe(4);
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令: npx jest --colors --coverage

但是,即使我已经覆盖了代码的所有部分,但我还是得到了一条未被发现的行。开玩笑是不是有什么问题,还是我错过了一些东西。并有一种方法可以找出最有趣的部分未涵盖的代码。

笑话测试覆盖率输出的图像

Ben*_*eur 8

如果要查看未涵盖的行,可以在浏览器中打开生成的报告。

默认情况下,报告在此处./coverage/lcov-report/index.html

但是您还会在控制台中看到未覆盖行的行号(不是覆盖的行数,而是行号,在您的情况下是第一行)。

如果需要,还可以对覆盖范围进行一些配置:https : //jestjs.io/docs/en/configuration#collectcoverage-boolean

旁注,它在后台使用了伊斯坦布尔:https : //github.com/gotwarlost/istanbul