用超级调用stubing javascript方法

用超级调用stubing javascript方法,javascript,unit-testing,ecmascript-6,babeljs,sinon-chai,Javascript,Unit Testing,Ecmascript 6,Babeljs,Sinon Chai,我正在测试一个ES6类方法,它在其父类中调用一个类方法。例如: Polygon.js class Polygon { verifyDimensions() { this.allSidesValid(); } } export default Polygon; Square.js import Polygon from './Polygon'; class Square extends Polygon { verifyDimensions() {

我正在测试一个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' );
        }
    }
}
我想测试正方形的verifyDimensions,而不调用多边形的verifyDimensions。在使用sinon/chai进行测试时,babeljs似乎在创建类时复制源方法。这使得很难将其剔除

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

Square.spec.js

beforeEach( () => {
    sinon.stub( Polygon.prototype, 'verifyDimensions' );
    context.verifyDimensions = Square.prototype.verifyDimensions;
} );

super.verifyDimensions()
仍将引用
Polygon.prototype.verifyDimensions
,并将在测试中出错。

看起来他们删除了
toMethod
。@Bergi这正是我需要的。。。d'ohBabel根据原型动态查找方法,当您交换它时,它应该可以工作。我用手册
Polygon.prototype.verifyDimensions=function(){console.log('spy');}并打印了我的消息。@loganfsmyth当类定义在同一个文件中时,您的示例确实有效。我的代码示例应该更适合我看到的行为。我的问题更多的是针对从单独文件导入的类。我已经更新了可能的副本示例