使用超级调用来存储javascript方法

sta*_*lee 5 javascript unit-testing ecmascript-6 babeljs sinon-chai

我正在尝试测试在其父级中调用类方法的ES6类方法.例如:

Polygon.js

class Polygon {
    verifyDimensions() {
        this.allSidesValid();
    }
}
export default Polygon;
Run Code Online (Sandbox Code Playgroud)

Square.js

import Polygon from './Polygon';
class Square extends Polygon {
    verifyDimensions() {
        super.verifyDimensions();
        if( this.height !== this.width ) {
            throw new Error( 'Not square' );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想测试Square的verifyDimensions而不调用Polygon的verifyDimensions.使用sinon/chai进行测试似乎babeljs在创建类时正在制作源方法的副本.这使得它很难被删除.

例如,如果我像这样设置我的测试:

Square.spec.js

beforeEach( () => {
    sinon.stub( Polygon.prototype, 'verifyDimensions' );
    context.verifyDimensions = Square.prototype.verifyDimensions;
} );
Run Code Online (Sandbox Code Playgroud)

super.verifyDimensions()仍将是指Polygon.prototype.verifyDimensions,将错误的测试.