3

下面是我想使用 Chai、Sinon 和 Mocha 测试的静态类的简化版本。它公开了 2 个函数并有另一个内部函数。

//demo.js
const parentFunc = (baseNum) => {
    return childFunc(baseNum, 10);
};

const childFunc = (base, extra) => {
    const sum = base + extra;
    return internalFunc(sum);
};

const internalFunc = (num) => {
    return 100 + num;
};

module.exports = {
    parentFunc: parentFunc,
    childFunc: childFunc
}

逻辑无关紧要,我想知道的是如何窥探、存根或模拟类的所有功能以获得完整的 UT 覆盖。

下面有我想做的测试用例。

import DemoUtils from '../../src/scripts/common/demo';
import sinon from 'sinon';
import chai from 'chai';

const assert = chai.assert;
const expect = chai.expect;

describe('Demo', () => {
    describe('Internal Function', () => {
        //const res = DemoUtils.internalFunc(8);
    });

    describe('Child Function', () => {
        it('should return ', () => {
            const res = DemoUtils.childFunc(5,10);
            assert.equal(res, 115);
        });

    });

    describe('Parent Function', () => {
        it('should return 140', () => {
            const res = DemoUtils.parentFunc(30);
            assert.equal(res, 140);
        });

        it('should call the child function', () => {
            const stubFunction = sinon.stub(DemoUtils, 'childFunc');
            stubFunction.returns(13);

            const res = DemoUtils.parentFunc(30);
            assert.equal(res, 13);

            assert.equal(stubFunction.calledOnce, true);
            stubFunction.restore();
        });
    });
});
  • 内部函数:我猜内部函数不能被测试,因为不能被调用/模拟,不是吗?
  • 子功能:测试有效。
  • 父函数:第一个测试工作,但存根函数永远不会被调用。我也尝试过间谍和嘲笑,但我也无法让它工作。

有人能够测试 ES6 静态类吗?

谢谢 :)

4

0 回答 0