我试图测试一个在其父级中调用类方法的ES6类方法。例如:
Polygon.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' );
}
}
}
我想测试Square的verifyDimensions而不调用Polygon的verifyDimensions。使用sinon / chai进行测试似乎babeljs在创建类时正在制作源方法的副本。这使得它很难被删除。
例如,如果我像这样设置我的测试:
Square.spec.js
beforeEach( () => {
sinon.stub( Polygon.prototype, 'verifyDimensions' );
context.verifyDimensions = Square.prototype.verifyDimensions;
} );
super.verifyDimensions()
仍然会引用Polygon.prototype.verifyDimensions
,并且会在测试中出错。