我正在尝试测试在其父级中调用类方法的 ES6 类方法。例如:
多边形.js
class Polygon {
verifyDimensions() {
this.allSidesValid();
}
}
export default Polygon;
Square.js
import Polygon from './Polygon';
class Square extends Polygon {
verifyDimensions() {
super.verifyDimensions();
if( this.height !== this.width ) {
throw new Error( 'Not square' );
}
}
}
我想在不调用 Polygon 的 verifyDimensions 的情况下测试 Square 的 verifyDimensions。使用 sinon/chai 进行测试,似乎 babeljs 在创建类时复制了源方法。这使得存根变得非常困难。
例如,如果我这样设置我的测试:
Square.spec.js
beforeEach( () => {
sinon.stub( Polygon.prototype, 'verifyDimensions' );
context.verifyDimensions = Square.prototype.verifyDimensions;
} );
the super.verifyDimensions()
will 仍然引用Polygon.prototype.verifyDimensions
并且会在测试中出错。