下面是我想使用 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 静态类吗?
谢谢 :)